Priya-Kiko Ответов: 1

Как поместить результаты LINQ с соединением между 2 сущностями типа T и типа T1 в список<T> вместе со столбцами из T и T1


Привет,

Прошу прощения. Я не знаю, как сформулировать этот вопрос.


У меня есть два стола. Категория и счетчик.

Category Table :
------------------
code varchar(6)
name varchar(30)
cntrno int

Counter Table :
------------------
code int
name varchar(30)


SQL Statement :
------------------
select category.code, category.name, counter.name as cntname from category join counter on counter.code=category.cntrno order by category.code asc

Output :
-----------------
Code	Name	    Cntname
c001	Breads	    BN001
c002	Cakes	    BN002
c003 	Pizza	    BN001
c004	Pastries    BN002



Im trying to use LINQ to achieve the above. I used this :

List<category> lstcategory = null;
lstcategory = (from caterow in Context.categorys
               join cntrow in Context.counters
               on caterow.cntrno equals cntrow.code
               orderby caterow.code
               select new category{ code = caterow.code, name = caterow.name,  cntname=cntrow.name }).ToList();


В приведенном выше запросе, cntname=cntrow.name не будет компилироваться, так как cntname не является именем столбца в категории класса. Как мне получить этот дополнительный столбец в списке категорий типов ?

Что я уже пробовал:

Создал класс, унаследованный от моего класса category, с требуемыми дополнительными столбцами в качестве свойств локально, изменил список типов category на этот тип класса и привел выходные данные LINQ к этому типу.

New classname = CategoryWithCounterName (with properties code, name, cntname)

List<CategoryWithCounterName> lstcategory = null;
lstcategory = (from caterow in Context.category
               join cntrow in Context.counter
               on caterow.cntrno equals cntrow.code
               orderby caterow.code
               select new CategoryWithCounterName{ code = caterow.code, name = caterow.name,  cntname=cntrow.name }).ToList();


Разве это правильный путь, чтобы следовать? Пожалуйста, посоветуйте.

1 Ответов

Рейтинг:
7

Andrew Baylis

Это, безусловно, один из способов сделать это. В качестве альтернативы вы можете просто вернуть список анонимных типов:

...
select new { Code = cterow.code, Name = caterow.name, cntName = cntrow.name} ).ToList();


Priya-Kiko

Спасибо.