3

鉴于我在数据库表中的以下信息:

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

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

4

3 回答 3

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 
                                            });
于 2012-09-01T11:48:21.783 回答
2

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

myList.GroupBy(x=>new {x.Col1,x.Col2,x.Col3}).Select(x=>x.First()).ToList();
于 2012-09-01T11:53:36.100 回答
1

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

var result = Context.Table.Distinct();

这将返回您想要的结果。

如果您有更多列,那么您可以按照@Saeed Amiri他的回答中所述尝试。

@Kundan Singh Chouhan's替代方案将为您提供与您在问题中陈述的完全相同的 sql 查询

于 2012-09-01T11:51:44.743 回答