Pencarian jika nilai yang ada dalam daftar benda-benda yang menggunakan Linq

Katakanlah saya memiliki Pelanggan kelas yang memiliki properti FirstName. Kemudian saya memiliki Daftar.

Dapat LINQ dapat digunakan untuk menemukan jika memiliki daftar pelanggan dengan Firstname = 'John' dalam satu pernyataan.. bagaimana?

Larutan

LINQ mendefinisikan sebuah metode penyuluhan yang sempurna untuk memecahkan masalah ini dengan tepat:

using System.Linq;
...
    bool has = list.Any(cus => cus.FirstName == "John");

pastikan anda referensi System.Core.dll yang's mana LINQ hidup.

Komentar (5)

zvolkov's jawaban adalah salah satu yang sempurna untuk menemukan keluar jika ada seperti pelanggan. Jika anda perlu untuk menggunakan pelanggan setelah itu, anda dapat melakukan:

Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
    // Use customer
}

Aku tahu ini isn't apa yang kau minta, tapi saya pikir saya'd mendahului tindak pada pertanyaan :) (Tentu saja, ini hanya menemukan pertama pelanggan tersebut... untuk menemukan semua dari mereka, hanya menggunakan normal where.)

Komentar (5)

Salah satu pilihan untuk mengikuti pada pertanyaan (bagaimana untuk menemukan pelanggan yang mungkin memiliki sejumlah nama pertama):

List names = new List{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));

atau untuk mengambil pelanggan dari csv mirip daftar

string input = "John,Max,Pete";
List names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
Komentar (0)

Menggunakan Linq anda memiliki banyak kemungkinan, di sini tanpa menggunakan lambdas:

//assuming list is a List or something queryable...
var hasJohn = (from customer in list
         where customer.FirstName == "John"
         select customer).Any();
Komentar (0)
customerList.Any(x=>x.Firstname == "John")
Komentar (5)

Teknik yang saya gunakan sebelum menemukan .Setiap():

var hasJohn = (from customer in list
      where customer.FirstName == "John"
      select customer).FirstOrDefault() != null;
Komentar (0)
List list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");

john akan batal jika tidak ada pelanggan yang ada dengan nama "John".

Komentar (3)

Kemungkinan lain

if (list.Count(customer => customer.Firstname == "John") > 0) {
 //bla
}
Komentar (2)

Coba ini, saya berharap untuk membantu anda.

 if (lstCustumers.Any(cus => cus.Firstname == "John"))
 {
     //TODO CODE
 }
Komentar (1)