次のコードがあるとします:
class SampleClass
{
public int Id {get; set;}
public int Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";
私の質問は、myList
文字列に一致するNameプロパティを持つオブジェクトのみをnameToExtract
から抽出するために使用できるリスト関数です。
この質問が本当に単純/明白な場合、私は事前に謝罪します。
Enumerable.Where 拡張メソッドを使用できます:
_var matches = myList.Where(p => p.Name == nameToExtract);
_
_IEnumerable<SampleClass>
_を返します。フィルタリングされたList
が必要だと仮定すると、上記の.ToList()
を呼び出すだけです。
ところで、今日上記のコードを書いていた場合、Unicode文字列の処理の複雑さを考えると、等価チェックを異なる方法で行います。
_var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));
_
myList.Where(item=>item.Name == nameToExtract)
using System.Linq;
list.Where(x=> x.Name == nameToExtract);
編集:質問の読み間違い(現在はすべて一致)
LINQを示唆する他の回答に加えて、この場合の別の選択肢は、 FindAll
インスタンスメソッドを使用することです。
List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);