2015-07-30 4 views
2

Я пытаюсь создать обработчик для сохранения результата запроса LINQ к списку и то, что я достиг вСохранить результат запроса LINQ к списку

public static List<string> Get() 
{ 
    LesamisContainer LC = new LesamisContainer(); 

    List<string> list = (from pb in LC.PayBills 
         join c in LC.Customers on pb.CustomerId equals c.Id 
         join d in LC.Departments on pb.DepartmentId equals d.Id 
         select new { pb.Id, c.FullName, d.Name, pb.Discount, pb.TotalAmount, pb.Details, pb.Date, pb.CustomerId, pb.DepartmentId } into x 
         select x).Tolist(); 
    return list; 
} 

, но я получил это исключение

http://i60.tinypic.com/2lxu2o.png

Cannnot преобразовать тип 'System.Collections.Generic.List' в 'System.Collections.Generic.List'

+0

Ваш запрос возвращает анонимный тип с несколькими свойствами, но вы пытаетесь сохранить его в «Список ». Как вы ожидаете, что это сработает? – MarcinJuraszek

+0

Я начинаю программировать, и поэтому я прошу о помощи :) –

ответ

2

Вы создаете анонимный тип с

select new { pb.Id, c.FullName, d.Name, pb.Discount, pb.TotalAmount, pb.Details, pb.Date, pb.CustomerId, pb.DepartmentId } into x 

select x просто возвращает этот тип. Чтобы получить List<string>, вам нужно будет вернуть свойства из этого, например: select x.FullName

Это было бы довольно странным способом сделать что-то, хотя, возможно, и не то, что вы действительно намереваетесь. Я предполагаю, что вы действительно не хотите List<string>.

В этом случае, так как вы возвращаете результат из метода он должен быть объявлен и не является анонимным:

public class PayBillModel 
{ 
    public int Id {get;set;} 
    ... 
} 

затем

select new PayBillModel() { pb.Id, c.FullName, d.Name, pb.Discount, pb.TotalAmount, pb.Details, pb.Date, pb.CustomerId, pb.DepartmentId } 

Таким образом, вы в конечном итоге с List<PayBillModel> ,

+0

Я действительно хочу, чтобы список привязывал данные к datagridview и без инициализации для него, потому что я работаю с сущностью сначала рамочная мода, и это вызовет множество проблем с генерацией запроса базы данных в будущем. это работает для меня, но это не тот результат, который я хочу –

1

Вы получаете несколько типов. Попробуйте изменить тип List к object вместо string

List<object> list = (from pb in LC.PayBills 
         join c in LC.Customers on pb.CustomerId equals c.Id 
         join d in LC.Departments on pb.DepartmentId equals d.Id 
         select new { pb.Id, c.FullName, d.Name, pb.Discount, pb.TotalAmount, pb.Details, pb.Date, pb.CustomerId, pb.DepartmentId } into x 
         select x).Tolist(); 

Вы можете просматривать список по:

foreach (object item in list) 
{ 
    if (item is pb.Id) 
    { 
     //do something 
    } 

    //or 
    //if (item.GetType() == typeof(PayBills)) { } 
} 
+0

он не работает для меня :( –

 Смежные вопросы

  • Нет связанных вопросов^_^