3

データベーステーブルに次の情報があるとします。

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

Linq で (Entity Framework を使用しているため) 以下を取得するにはどうすればよいですか。

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

1つの列で個別に行う方法しか見つけられないため、コードでそれを行う方法がわかりません。

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

テーブルにこれらの 3 つの列しかない場合は、単純です。

var result = Context.Table.Distinct();

これにより、目的の結果が返されます。

より多くの列がある場合@Saeed Amiriは、彼の回答に記載されているように試すことができます。

@Kundan Singh Chouhan's代替手段は、質問で述べたのとまったく同じSQLクエリを提供します

于 2012-09-01T11:51:44.743 に答える