Tôi có một phương pháp mở rộng mà là vụ để lọc một đối tượng queryable (IQueryable) dựa trên một tập hợp các Id ....stack tràn trong LINQ to SQL và chứa từ khóa
Lưu ý rằng IQueryable có nguồn gốc từ của tôi cơ sở dữ liệu thông qua một yêu cầu LinqToSql
public static IQueryable<NewsItemSummary> WithID(this IQueryable<NewsItemSummary> qry, IQueryable<Guid> Ids)
{
return from newsItemSummary in qry
where Ids.Contains(newsItemSummary.ID)
select newsItemSummary;
}
Nếu Id được tạo ra từ một mảng hoặc danh sách và thông qua tại như một danh sách queryable, nó không làm việc
Ví dụ ...
GetNewsItemSummary().WithID(ids.AsQueryable<Guid>())
Nếu Ids được tạo thành một yêu cầu LinqToSql, nó hoạt động !!
này được biết đến vấn đề: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355026
My Id bộ sưu tập không thể xuất phát từ một yêu cầu LinqToSql ...
Lưu ý, nếu tôi thay đổi chức năng để nó tiêu thụ và IList chứ không phải là một IQueryable .. ..
public static IQueryable<NewsItemSummary> WithID(this IQueryable<NewsItemSummary> qry, IList<Guid> Ids)
{
return from newsItemSummary in qry
where Ids.Contains(newsItemSummary.ID)
select newsItemSummary;
}
bây giờ tôi có được ngoại lệ sau đây:
Method 'Boolean Contains(System.Guid)' has no supported translation to SQL.
Vì vậy, ... tất cả những gì tôi muốn làm là lọc bộ sưu tập tin tức của tôi dựa trên danh sách hoặc mảng của Guids .... Ý tưởng ???
Để bạn biết, thẻ "stackoverflow" thường dành cho các câu hỏi meta, trong khi thẻ "stack-overflow" tốt hơn cho các luồng tràn thực sự. – Zifre