Có tương đương với câu lệnh SQL IN trong LINQ đối với các đối tượng không?Trong tuyên bố cho LINQ đối tượng
5
A
Trả lời
16
Có - Contains.
var desiredNames = new[] { "Jon", "Marc" };
var people = new[]
{
new { FirstName="Jon", Surname="Skeet" },
new { FirstName="Marc", Surname="Gravell" },
new { FirstName="Jeff", Surname="Atwood" }
};
var matches = people.Where(person => desiredNames.Contains(person.FirstName));
foreach (var person in matches)
{
Console.WriteLine(person);
}
(Trong LINQ to SQL này kết thúc lên như một "IN" truy vấn.)
Lưu ý rằng trong LINQ to Objects ở trên là không thực sự rất hiệu quả. Bạn muốn được tốt hơn off với một tham gia: (. Điều này vẫn có thể được thực hiện với ký hiệu dấu chấm tất nhiên, nhưng nó kết thúc lên được phần nào Messier)
var matches = from person in people
join name in desiredNames on person.FirstName equals name
select person;
0
Tôi sẽ đi cho Inner Tham gia trong này bối cảnh. Nếu tôi đã sử dụng contains
, nó sẽ lặp lại 6 lần mặc dù nếu thực tế là chỉ có hai trận đấu. Tôi chỉ muốn nhấn mạnh ở đây rằng tôi sẽ đi cho Joins thay vì IN predicate.
var desiredNames = new[] { "Pankaj" };
var people = new[]
{
new { FirstName="Pankaj", Surname="Garg" },
new { FirstName="Marc", Surname="Gravell" },
new { FirstName="Jeff", Surname="Atwood" }
};
var records = (from p in people join filtered in desiredNames on p.FirstName equals filtered select p.FirstName).ToList();
Các vấn đề liên quan
- 1. switch tuyên bố trong LINQ
- 2. lấy Type cho một đối tượng tuyên bố động
- 3. LINQ Nếu Bản Tuyên Bố
- 4. N-Enumerables Trong Tuyên bố LINQ?
- 5. Tuyên bố, tuyên bố, tuyên bố
- 6. Làm thế nào để gỡ lỗi một Tuyên bố LINQ
- 7. Gán một giá trị cho nhiều đối tượng trong một tuyên bố
- 8. LINQ to SQL: WHERE trong bản Tuyên Bố
- 9. Clojure: giải quyết biểu tượng tuyên bố
- 10. Tuyên bố xấu xí LINQ, một cách tốt hơn?
- 11. Tuyên bố LINQ cho một chuỗi vô hạn các nửa liên tiếp
- 12. Tuyên bố LINQ ấn tượng nhất mà bạn đã gặp phải là gì?
- 13. Viết lại một tuyên bố sử dụng LINQ (C#)
- 14. Làm thế nào để đặt thời gian chờ cho NHibernate LINQ tuyên bố
- 15. Đối với ... trong tuyên bố Mục tiêu-C
- 16. Tuyên bố trả về trong JS Constructors
- 17. Tuyên bố đầu bị ràng buộc đối tượng MSXML ném một lỗi trong VBA
- 18. Thêm trường hợp khi tuyên bố trong đối tượng lệnh Yii SQL
- 19. WPF DialogResult tuyên bố?
- 20. biến Tuyên bố trong @implementation
- 21. Tuyên bố Foreach trong listbox
- 22. stdlib.h không có tuyên bố cho putenv
- 23. bằng tuyên bố cho công nhân nền
- 24. SELECT tuyên bố trong JAVA
- 25. IF Tuyên bố nhiều điều kiện, cùng một tuyên bố
- 26. Tuyên bố sử dụng cho @OneToOne - Doctrine2
- 27. Tuyên bố về biến kiểu chung trừu tượng
- 28. SQL bí danh cho SELECT tuyên bố
- 29. Sử dụng một loại bí danh trong một tuyên bố LINQ đang tạo ra một lỗi
- 30. MYSQL trong bản Tuyên Bố
Cảm ơn bạn! Danh tiếng của bạn đứng trước bạn ;-) –
Tại sao kết nối bên trong không được ưu tiên ở đây? Bạn biết nếu những người có 10 hồ sơ và mong muốnNames chứa 2, nó sẽ lặp lại 20 lần trong nền, không phân biệt thực tế là liệu có một trận đấu hay không. – Pankaj
@PankajGarg: Xin đừng pester như thế này - Tôi sẽ không luôn có thể trả lời ngay lập tức. Bạn đã đọc phần dưới cùng của bài viết của tôi mà rõ ràng nói rằng trong LINQ to Objects một tham gia sẽ tốt hơn? –