2009-08-20 25 views
0

私は以下のコードを持っています。匿名型のIEnumerableから項目のサブセットを選択するにはどうすればよいですか?

MyDataContext db = MyDataContext.Create(); 
      bc = 
       db.BenefitCodes.Select(
        b => 
        new 
         { 
          BenCd = b.BenCd 
          , Description = b.BenDesc 
          , BenInterest = b.BenInterest 
          , CodeDescription = string.Format("{0} - {1}", b.BenCd, b.BenDesc) 
         }); 

私はCodeDescriptionがbenefitCodeのプロパティではありませんし、顧客はそれがdropDrownListでこのように表示されるように望んでいるとして、匿名型のルートを行かなければなりませんでした。とにかく私の質問は、このリストから項目のサブセットを選択する方法です。私はBenInterest属性に基づいて項目を選択する必要があります。

これはIEnumerableを返すので、私はこのルートに行きたいと思っており、これは私が立ち往生する場所です。私の意図は、新しいIEnumerableリストを構築し、それにドロップダウンデータソースを設定することです。

IEnumerator enumerator = BenefitCodes.GetEnumerator(); 
     while(enumerator.MoveNext()) 
     { 
       //What can I do here to return items based on BenInterest? 
       //I basically either want items that have a BenInterest of 'E' 
       // or items that DO NOT have a BenInterest of 'E' 
       // this is based on the value of a radioButtonList on the page 
     } 

したがって、希望のアイテムのみを含む同じ匿名タイプの新しいEnumerableを作成するにはどうすればよいですか。

ありがとうございました。 乾杯、 〜CK

+1

は、あなただけの.Where()関数の呼び出しを追加できませんでしたか? –

答えて

3

はあなただけ使用することができます:あなたが選択し呼び出す前

var newCollection = bc.Where(e => e.BenInterest == 'E'); 
+0

これは、IEnumerableがIEnumerableでないを返します。どこがサポートされていません。 'CodeDescription'はテーブル内のフィールドではないので、型の安全性はありません。 – Hcabnettek

+0

mmm - bc shoudlはIEnumerable であり、Tは匿名タイプです。特典コードとは何ですか? LINQ to SQL、Entityフレームワークなどを使用していますか?どのような場合でも、この情報を保持するクラスを作成し、匿名型を使用する代わりに作成することができます。次に、IEnumerable.Castを使用してIEnumerableに変換することができます。

+0

はいLINQ to SQL。私はこれのためのクラスを作成することを考えなかった。それは素晴らしいアイデアのように思えます。私は同じqryを使用し、結果をループして、必要なものを厳密に型指定したリストを作成します。アイデアをありがとう。 – Hcabnettek

関連する問題