与Linq的多重区别

时间:2012-09-01 11:40:42

标签: linq entity-framework

根据我在数据库表中提供的以下信息:

Col 1, Col2, Col3
1    , x   , G
1    , y   , H
2    , z   , J
2    , a   , K
2    , a   , K
3    , b   , E

我可以在Linq中做什么(因为我正在使用实体框架)来获得以下内容:

1    , x   , G
1    , y   , H
2    , z   , J
2    , a   , K
3    , b   , E

你明白了,我可以在SQL中完成以下任务:

Select Col 1, Col 2, Col 3 
from Table
group by Col 1, Col 2, Col 3

不知道如何在代码中执行此操作,因为我只能找到一种方法在一列上执行不同的操作。

3 个答案:

答案 0 :(得分:2)

试试这个:

var Result = Context.Table.Select(C => 
                     new { 
                           Col1 = C.Col1, 
                           Col2 = C.Col2, 
                           Col3 = C.Col3 }).Distinct();

或者替代:

var Result = Context.Table.GroupBy(G=> new { G.Col1, G.Col2, G.Col3 })
                           .Select(C => new { 
                                             Col1 = C.Key.Col1, 
                                             Col2 = C.Key.Col2, 
                                             Col3 = C.Key.Col3 
                                            });

答案 1 :(得分:2)

您还可以在linq中的多个字段中使用group by:

myList.GroupBy(x=>new {x.Col1,x.Col2,x.Col3}).Select(x=>x.First()).ToList();

答案 2 :(得分:1)

如果表中只有这三列,那很简单。

var result = Context.Table.Distinct();

这将返回您想要的结果。

如果您有更多列,那么您可以尝试在其答案中说明@Saeed Amiri

@Kundan Singh Chouhan's替代方法将为您提供完全相同的SQL查询,您在问题中说明了