2013-10-04 4 views
1

друг, я работаю в Linq. Я использую объединение в linq-запросе с Entity Model, как показано ниже.Linq Присоединиться к C#

var Records = from Cats in Context.Categories 
join prod in Context.Products on Cats.Id equals prod.Category_Id 
select new { CatName = Cats.Name, ProdName = prod.Name }; 

я хочу, чтобы преобразовать запись вар в список объектов, поэтому я создать промежуточный объект, удерживать обе entites значения (продукта, категория). Теперь, когда я брошу этот список в список, как

List<test> testList = (List<test>)Records; 

as Record.ToList(); ошибка компилятора. как я бросил объект var в список, чтобы связать его со списком в frontend. Есть ли альтернатива в лямбда, которая также будет оценена. Правильно ли мой подход?

мой тестовый класс, как:

class test{ 
string catname; 
string productname; 
} 
+0

Это не имеет никакого отношения к самому соединению, а скорее к кастингу, правильно? Btw, если вы получаете сообщение об ошибке, это действительно хорошая практика, чтобы НАПРАВЛЯТЬ ошибку США, поэтому нам не нужно гадать ... – walther

+1

Каково ваше определение типа 'test'? –

+0

test - это мой класс, который содержит категории и поля продукта, чтобы получить запись из более чем одного столбца. –

ответ

2

Создать new Test и установить свойства, соответственно, и, наконец, называть ToList

List<test> testList = (from c in Context.Categories 
join p in Context.Products on c.Id equals p.Category_Id 
select new Test{ Category= c, Product= p}).ToList(); 

Если есть класс, указанный ниже

public class Test{ 

    public string CatName{ get; set; } 
    public string ProductnName{ get; set; } 

} 

List<test> testList = (from c in Context.Categories 
join p in Context.Products on c.Id equals p.Category_Id 
select new Test{ CatName= c.Name, ProductnName= p.Name}).ToList(); 
+0

надеется на его работу. глядя вправо. благодаря –

3

использование ToList() по Вашему запросу.

var Records = (from Cats in Context.Categories 
       join prod in Context.Products on Cats.Id equals prod.Category_Id 
       select new test { CatName = Cats.Name, ProdName = prod.Name }).ToList(); 

Для того, чтобы сделать его работу необходимо определить тестовый класс следующим образом (вы должны определить свойства)

public class test { 
    public string catname {get;set;} 
    public string productname {get;set;} 
} 
+2

Анонимный объект все еще не будет отлит к типу' test' –

+0

, как отличить этот объект? @lazyberezovsky –

+1

@lazyberezovsky ok вы правы. Пропустил это. проблема только в том, что «Тест» – Jehof

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