2016-04-01 12 views
1

私のテーブルにはいくつかのカラムがあり、Linqを使って2つの特定のカラムで異なるローを選択する必要があります。Linqで異なるカラム名を選択

私のSQLと同等です:

Select distinct Level1Id, Level1Name 
from levels 

私が現在やっていることは次のとおりです。

db.levels.GroupBy(c=> c.Level1Id).Select(s => s.First()) 

これは全体の行だけでなく、Level1IdとLevel1Nameを取得します。このlinqクエリで取得する列を指定するにはどうすればよいですか?選択して

+2

今、以下の答えは、変数cまたはlを使用しますか? – Baronz

答えて

6

、あなたは匿名オブジェクトの列を指定し、その上で個別に使用することができます。

db.levels.Select(l => new{ l.Level1Id, l.Level1Name }).Distinct(); 
3

は、選択あなたのLINQクエリで2つの列を指定し

db.levels.Select(c => new {c.Level1Id, c.Level1Name}).Distinct();

1

を試してみてくださいLevel1IdLevel1Nameの匿名オブジェクトを作成します。

var query = (from v in db.levels 
      select new { Level1Id = v.Level1Id, Level1Name = v.Level1Name }).Distinct(); 

と、このように各項目を使用します。重要なことがある

var result = db.levels.GroupBy(c=> new { c.Level1Id, c.Level1Name }) 
       .Select(s => s.First()) 

:匿名型は構造的な比較を使用し、それはなぜGroupByまたは任意のだ

foreach (var r in query){ 
    int valId = r.LevelId; 
    int level = r.Level1Name; 
    //do something 
} 
1

あなたは、一歩とても接近しています他の回答をする仕事。

関連する問題