-2

select と 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);
}

Tks

4

2 に答える 2

0

2 つのこと:

  • Select() を使用するのは少し不必要だと思います。これは foreach に送信されるデータを制限するだけなので、少なくともこの場合、実行していることでメモリをわずかに節約できるだけです。変数全体をたとえば JSON にダンプする場合、データの量を制限すると効果的です。
  • 他の人が言ったように、foreach で var を使用すると、必要に応じて匿名型を使用できます。私自身の個人的な好みは、物事をシリアル化するときを除いて、それを避けようとすることです(それでも、単語や何かのスペルを間違えた場合に後で間違いを避けるために、データ契約を行うことを好みます)

    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);
    }
    

編集: また、 orderby は、順序付けを行うために比較する何かを言う必要があります。例として説明を行いました。

于 2012-04-12T19:03:04.333 に答える
0

匿名型を作成しています: Select(i => new { i.color, i.description})

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

ループを次のように変更します

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

そして、ループで匿名型を使用します。

于 2012-04-12T18:55:22.873 に答える