1

データを含むリストがあり、非アクティブなサプライヤと最新の結果を1つだけSupplier使用して検索したいと思います。SupplierID

だから私は持っています:

List<Supplier> filteredList = this.toList();    
filteredList.OrderByDescending(m => m.ModifiedDatetime).FirstOrDefault();    
filteredList.Where(f => (f.Active == false && f.FieldId == SupplierFieldID))
            .ToList<Supplier>();

しかし、私はこれを機能させることはできません。助けてください。

4

2 に答える 2

4

次のように、LINQ 式をチェーンする必要があります。

var filteredList = unfilteredData
    .Where(f => f.Active == false && f.FieldId == SupplierFieldID)
    .OrderByDescending(m => m.ModifiedDatetime)
    .FirstOrDefault();

ToList()リストではなく単一のアイテムが必要なため、は必要ありません。これが何をするかFirstOrDefault()です。最後のアイテムが必要な場合は、元の注文条件の逆で注文する必要があります。たとえば、最新の更新日のエントリが必要な場合は、降順で並べ替える必要があります (そうでした)。

于 2013-02-26T02:01:39.023 に答える
1

LINQ 演算子を連鎖させて、1 つのステートメントでこれを行うことができます。

var filteredList = myList.Where(f => f.Active == false && f.FieldId == SupplierFieldID)
                         .OrderByDescending(m => m.ModifiedDatetime)
                         .Take(1);

または@Preston Guillotが示唆したように、さらに短い形式:

var filteredList = unfilteredData
            .OrderByDescending(m => m.ModifiedDatetime)
            .FirstOrDefault(f => f.Active == false && f.FieldId == SupplierFieldID); 
于 2013-02-26T02:01:12.403 に答える