どのような場合に拡張手法がラムダ仕様の超LINQtoObjectsフィルター。

StackOverflow https://stackoverflow.com/questions/5194

  •  08-06-2019
  •  | 
  •  

質問

私は試作部C#3集でした。私集製品:

public class MyProduct
{
    public string Name { get; set; }
    public Double Price { get; set; }
    public string Description { get; set; }
}

var MyProducts = new  List<MyProduct>
{            
    new  MyProduct
    {
        Name = "Surfboard",
        Price = 144.99,
        Description = "Most important thing you will ever own."
    },
    new MyProduct
    {
        Name = "Leash",
        Price = 29.28,
        Description = "Keep important things close to you."
    }
    ,
    new MyProduct
    {
        Name = "Sun Screen",
        Price = 15.88,
        Description = "1000 SPF! Who Could ask for more?"
    }
};

今を利用した場合、LINQフィルターで動作す:

var d = (from mp in MyProducts
             where mp.Price < 50d
             select mp);

そして、利用の拡張手法とラムダフィルタの作製:

var f = MyProducts.Where(mp => mp.Price < 50d).ToList();

質問 できるように、ものを使うのですか?

役に立ちましたか?

解決

LINQがメソッドの呼び出しのようなコードです。

つまり、ありません。

しかし、二つのコードできます。ToListので、最初のコードを作成しenumerableデータソースだけます。ToListでを同一にしなければなりません。

他のヒント

となる可能性があり IEnumerable<MyProduct> 中f List<MyProduct>

の変換を行いますのC#コンパイラ

var d = 
    from mp in MyProducts
    where mp.Price < 50d
    select mp;

に変換される(コンパイル前の細やジェネリック医薬品の拡大):

var d = 
    MyProducts.
    Where<MyProduct>( mp => mp.Price < 50d ).
    Select<MyProduct>( mp => mp ); 
    //note that this last select is optimised out if it makes no change

るということに注意してくださいこのサンプルで差はほとんどない。がLinqが本当に貴重であり複雑なタイルです。

例えばこの計算書を含むグループ-栽培を含め垂直、受注および数ましょう言が読み取Linqる場合には、sqlに登場する同等の .Method().Method.Method() が複雑です。

その他のToList差#2がたくさん読みやすくするために、自然IMO

構文を使用している d 得により変形のコンパイラにILの延長す。の"SQL"のような構文であることを考えればより自然な方法はLINQの発現が個人的に好みの延長できません。としては、既に指摘され、最初の例を返却するIEnumerable結果を次の例では、リストを返しの結果により呼び出ToList().削除されたり、ToList()を呼び出しの例では、両を返しと同じ結果が返されますIEnumerableます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top