web-dev-qa-db-ja.com

List <T>要素に特定のプロパティ値を持つ項目が含まれているかどうかを確認する方法

public class PricePublicModel
{
    public PricePublicModel() { }

    public int PriceGroupID { get; set; }
    public double Size { get; set; }
    public double Size2 { get; set; }
    public int[] PrintType { get; set; }
    public double[] Price { get; set; }
}

List<PricePublicModel> pricePublicList = new List<PricePublicModel>();

pricePublicListの要素に特定の値が含まれているかどうかを確認する方法。より正確には、pricePublicModel.Size == 200が存在するかどうかを確認したいですか?また、この要素が存在する場合、どの要素であるかを知る方法はありますか?

編集辞書がこれに適している場合は、辞書を使用できますが、方法を知る必要があります:)

100
ilija veselica

リストがあり、リスト内の特定の条件に一致する要素が存在する場所を知りたい場合は、FindIndexインスタンスメソッドを使用できます。といった

int index = list.FindIndex(f => f.Bar == 17);

ここで、f => f.Bar == 17は、一致する基準を持つ述語です。

あなたの場合、あなたは書くかもしれません

int index = pricePublicList.FindIndex(item => item.Size == 200);
if (index >= 0) 
{
    // element exists, do what you need
}
172
Anthony Pegram
bool contains = pricePublicList.Any(p => p.Size == 200);
111
Daniel A. White

あなたは存在を使用することができます

if (pricePublicList.Exists(x => x.Size == 200))
{
   //code
}
23
Tiago

これは、LINQを使用すると非常に簡単です。

var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
    // Element doesn't exist
}
13
Jacob

List<T>には、希望することを正確に行うメソッド Find が用意されているため、実際にはLINQは必要ありません。

指定された述語によって定義された条件に一致する要素を検索し、List<T>全体で最初に出現したものを返します。

サンプルコード:

PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
9
Mark Byers
var item = pricePublicList.FirstOrDefault(x => x.Size == 200);
if (item != null) {
   // There exists one with size 200 and is stored in item now
}
else {
  // There is no PricePublicModel with size 200
}
3
Mahesh Velaga