使用Linq to Entities获取唯一值

Sac*_*nth 2 c# linq linq-to-entities entity-framework-4.1

我正在使用EF并且有一个上下文,我可以使用_inventoryContext.Items从中获取Item对象的集合.现在,这些item对象具有一个名为Carrier的字符串值.假设Items集合中有5个项目,它们具有以下Carrier值:

"A", "A", "B", "C", "C"
Run Code Online (Sandbox Code Playgroud)

如何使用_inventoryContext.Items获取唯一的载波值?

"A", "B", "C"
Run Code Online (Sandbox Code Playgroud)

注意

var carriers = _inventoryContext.Items.Select(i => i.Carrier).Distinct();
Run Code Online (Sandbox Code Playgroud)

不起作用; 我得到"不支持方法'Distinct'"没有内部异常.

我正在使用SQL Server 2008 Express.Items是一个DataServiceQuery<Item>,它的Carrier属性是一个字符串.

Adu*_*cci 7

你的例子应该有用,但这是你可以尝试的另一种方式

List<string> carriers = _inventoryContext.Items.GroupBy(i => i.Carrier)
                                               .Select(i => i.Key)
                                               .ToList();
Run Code Online (Sandbox Code Playgroud)