2011-10-28 28 views
7

Tôi đang cố gắng tìm một truy vấn LINQ để tôi có thể viết nó trong một câu lệnh if.danh sách có chứa một ID trong linq

Pseudo code:

IDList là danh sách Danh sách ints < int>

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

nhưng tôi dường như không thể tìm ra những gì cần.

Trong none-LINQ làm việc này:

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

nhưng tôi muốn nó như một dòng nếu có thể.

đầu tiên tôi đã cố gắng này:

IDList.Contains(Object.Id); 

nhưng điều này ném một lỗi biên dịch

Tôi đang tự hỏi nó nên là một trong hai?

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

hoặc

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

tôi không hoàn toàn hiểu làm thế nào lambdas và mọi thứ làm việc hoặc sự khác biệt giữa andy và tồn tại vì vậy tôi không chắc chắn nếu tôi dọc theo đường sai?

+0

Những gì bạn muốn làm, bạn có thể giải thích một cách hợp lý vì điều này không rõ ràng trong câu hỏi – Ankur

Trả lời

17

Bạn chỉ có thể làm điều này:

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

Giả sử rằng MyList là một IEnumerable<T> (hoặc bất cứ điều gì xuất phát từ IEnumerable<T>) trong đó T là một đối tượng mà có một tài sản mang tên Id của cùng một loại tài sản Id trên ví dụ MyObject.

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

OK, nó sẽ trả lại cho bạn true nếu có ít nhất một phần tử thỏa mãn vị từ của bạn, tồn tại.

Các vấn đề liên quan