liste linq içinde bir kimlik içerir

Bir linq sorgusu bulmaya çalışıyorum, böylece bir if deyiminde yazabilirim.

Sözde kod:

IDList, ints List'in bir listesidir< int >

if (IDList.Contains (Object.Id)) Do something

ama ihtiyacım olanı yapmaya çalışmıyorum.

Hiç-linq değil bu çalışır:

  foreach(int id in IDList )
     {
        if (id == Object.Id)
            break;
     }

ama mümkünse bunu tek satır olarak istiyorum.

Bunu ilk denedim:

IDList.Contains(Object.Id);

ama bu bir derleme hatası atar

Merak ediyorum, bu ikisinden biri olmalı mı?

  IDList.Any(id => id == Object.Id)

veya

IDList.Exists(id => id == Object.Id);

I don't completely understand how the lambdas and things work veyathe difference between andy and exists so I'm not sure if I'm along the wrong line?

7
Ne yapmak istersen mantıklı bir şekilde açıklayabilirsin, çünkü bu soruda net değil.
katma yazar Ankur, kaynak

2 cevap

Bunu basitçe yapabilirsiniz:

if (MyList.Any(c => c.Id == MyObject.Id)) { }

Assuming that MyList is an IEnumerable (or anything that derives from IEnumerable) where T is an object that has a property named Id of the same type of the property Id on the MyObject instance.

18
katma
 IDList.Any(id => id == Object.Id)

Tamam, itirazınızı yerine getiren en az bir öğe varsa, true 'i döndürecektir.

5
katma