บอกว่าผมได้เรียนซึ่งมีคุณสมบัติCustomer
จากนั้นฉันมีFirstName
List<Customer>
สามารถใช้ LINQ เพื่อค้นหาว่ารายชื่อมีลูกค้าด้วยFirstname = 'John'
คำสั่งเดียว .. ได้อย่างไร?
บอกว่าผมได้เรียนซึ่งมีคุณสมบัติCustomer
จากนั้นฉันมีFirstName
List<Customer>
สามารถใช้ LINQ เพื่อค้นหาว่ารายชื่อมีลูกค้าด้วยFirstname = 'John'
คำสั่งเดียว .. ได้อย่างไร?
คำตอบ:
LINQ กำหนดวิธีการขยายที่สมบูรณ์แบบสำหรับการแก้ปัญหาที่แน่นอนนี้:
using System.Linq;
...
bool has = list.Any(cus => cus.FirstName == "John");
ตรวจสอบให้แน่ใจว่าคุณอ้างอิง System.Core.dll นั่นคือที่ LINQ อาศัยอยู่
คำตอบของ zvolkov เป็นคำตอบที่สมบูรณ์แบบในการค้นหาว่ามีลูกค้าเช่นนี้หรือไม่ หากคุณต้องการใช้งานลูกค้าในภายหลังคุณสามารถทำได้:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณถาม แต่ฉันคิดว่าฉันได้เตรียมคำถามติดตามไว้ล่วงหน้า :) (แน่นอนนี่จะหาลูกค้ารายแรกเท่านั้น... เพื่อค้นหาพวกเขาทั้งหมดเพียงแค่ใช้where
ประโยคปกติ)
ตัวเลือกหนึ่งสำหรับคำถามต่อไปนี้ (วิธีค้นหาลูกค้าที่อาจมีชื่อจำนวนเท่าใด):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
หรือเพื่อดึงลูกค้าจาก csv ของรายการที่คล้ายกัน
string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
ใช้ Linq คุณมีความเป็นไปได้มากมายโดยไม่ต้องใช้ lambdas:
//assuming list is a List<Customer> or something queryable...
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).Any();
customerList.Any(x=>x.Firstname == "John")
เทคนิคที่ฉันใช้ก่อนค้นพบ.Any()
:
var hasJohn = (from customer in list
where customer.FirstName == "John"
select customer).FirstOrDefault() != null;
List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");
john จะเป็นโมฆะหากไม่มีลูกค้าที่ใช้ชื่อ "John"
ความเป็นไปได้อีกอย่างหนึ่ง
if (list.Count(customer => customer.Firstname == "John") > 0) {
//bla
}
ลองนี้ฉันหวังว่าจะช่วยคุณ
if (lstCustumers.Any(cus => cus.Firstname == "John"))
{
//TODO CODE
}