2012-04-12 5 views
-2

selectとforeachを実行する必要がありますが、動作していません。これどうやってするの?LINQとLambdaを使用したDataSetの選択とForeachが機能していません

Ds ds = new Ds(); //DataSet 
Ds.HousesRow houseRow= ds.House.NewHousesRow(); 

houseRow.color= "red"; 
houseRow.date= new DateTime(); 
houseRow.description= "ZZZ"; 

ds.Houses.AddHouseRow(houseRow); 

var lHouses= ds.Houses.Select(i => new { i.color, i.description}).OrderBy(i => i).Distinct(); 

foreach (Ds.HousesRow item in lHouses) 
{ 
     System.Diagnostics.Debug.Print("Color: " + item.color + "Description: " + item.description); 
} 

あなたは匿名型作成され

+1

どのように機能しないのですか? –

答えて

0

TKS:Select(i => new { i.color, i.description})を。

foreachのDs.HousesRowにその型をキャストすることはできません。

foreach (var item in lHouses) 
{ 
     System.Diagnostics.Debug.Print("Color: " + item.color + "Description: " + item.description); 
} 

にあなたのループを変更

そして、あなたは、ループ内で匿名型を使用することになります。

0

2物事:

  • 私は選択を(使用して考えて)すべてのことをやっているが、少なくともこの場合には、ごくわずかなを与えるだろう、foreachのに送信されるデータを制限しているので、少し不要ですあなたがやっていることで記憶を節約できます。変数全体をJSONと言ってしまうと、データ量を制限するほうが有益でしょう。
  • 他の人が言ったように、foreach内でvarを使用すると、匿名型を使用することができます。私自身の個人的な好みは、私は物事をシリアライズする場合を除いて(でも、その後、私は言葉か何かを間違えた場合、後で間違いを避けるためにdatacontractsを行うことを好む)ことを回避しようということである

    Ds.HouseRow lHouses= ds.Houses.OrderBy(i => i.Description).Distinct(); 
    
    foreach (Ds.HouseRow item in lHouses) 
    { 
         System.Diagnostics.Debug.Print("Color: " + item.color + "Description: " + item.description); 
    } 
    

編集:また、あなたの注文者は注文と比較する何かを言わなければなりません。私は例のように説明をしました。

+0

それで 'OrderBy(i => i)'は何をするのでしょうか? – BrokenGlass

+0

うわー私はそれを逃した。それはOrderBy(i => i.Description)か、私が思うようなものでなければなりません。私は私の窓のマシンを持っていないので、それが動作することを確認するためにテストするが、それは説明でそれを並べ替えるべきであるように見えます。 –

+0

あなたのDistinct()は何をすべきですか?私はOPが別の色と説明のペアを選択したかったと思います。あなたの例は、リスト内の重複を取り除きます。これは非常に異なります。 –