Как применить оператор LINQ to SQL Distinct () к List ?

У меня серьезная (это сводит меня с ума) проблема с LINQ to SQL . Я разрабатываю приложение ASP.NET MVC3 с использованием C # и Razor в Visual Studio 2010.

У меня есть две таблицы базы данных, Продукт и Категории :

Продукт (Prod_Id [первичный ключ], другие атрибуты)

Категории ((Dept_Id, Prod_Id) [ первичные ключи], другие атрибуты)

Очевидно Prod_Id в категориях - это внешний ключ. Оба класса отображаются с помощью Entity Framework (EF). Я не упоминаю контекст приложения для простоты.

В категориях есть несколько строк, содержащих Prod_Id . Я хочу сделать проекцию всех Distinct Prod_Id в Категории. Я сделал это, используя простой (T) SQL в SQL Server MGMT Studio в соответствии с этим (действительно простым) запросом:

SELECT DISTINCT Prod_Id
FROM Categories

, и результат правильный. Теперь мне нужно сделать этот запрос в моем приложении, поэтому я использовал:

var query = _StoreDB.Categories.Select(m => m.Prod_Id).Distinct();

Я иду, чтобы проверить результат моего запроса, используя:

query.Select(m => m.Prod_Id);

или

foreach(var item in query)
{
  item.Prod_Id;
  //other instructions
}

, и он не работает. Прежде всего, Intellisense, когда я пытаюсь написать query.Select (m => m. или item. , показывает только предложения о методах (например, Equals и т. Д.) И не свойства. Я подумал, что, возможно, что-то не так с Intellisense (я думаю, большинство из вас много раз надеялись, что Intellisense ошибается :-D), но когда я запускаю приложение, я получаю сообщение об ошибке во время выполнения.

Прежде чем дать свой ответ имейте в виду, что:

1) Я проверил множество форумов, я пробовал обычный LINQ to SQL (без использования лямбда-выражений), но он не работает. Тот факт, что он работает в (T) SQL, означает, что что-то не так с инструкцией LINQ to SQL (другие запросы в моем приложении работают отлично).

2) По причинам, связанным с приложением, я использовал List < Т> вместо _StoreDB.Categories, и я подумал, что это проблема. Если вы можете предложить мне решение без использования List , мы также будем признательны.

Спасибо за ваши ответы

Francesco

6
задан CiccioMiami 19 April 2011 в 13:21
поделиться