2
我有一種方法,它將字符串數組作爲參數,並針對集合屬性進行查詢,集合屬性也是字符串的集合。如果該屬性具有作爲參數傳遞的字符串數組內的值之一,則應返回該值。使用集合參數針對集合屬性的Linq查詢
這裏是我的代碼:
public IEnumerable<BlogPost> GetAll(string[] tags,
bool includeUnapprovedEntries = false) {
foreach (var tag in tags) {
foreach (var blogPost in GetAll(includeUnapprovedEntries).
ToList().Where(x => x.Tags.Any(t => t == tag))) {
yield return blogPost;
}
}
}
注:
下面是完整的代碼:
這做工作,但它只是沒有按」 t看起來沒錯。我本來可以用一些擴展方法做得更好,但無法弄清楚會採取什麼措施並使此實現正確。
有什麼想法?
啊,我現在感覺很糟糕。我想我不應該在上午1點之後再編碼。謝謝! – tugberk 2012-04-04 07:13:16
@tugberk:你有沒有檢查它實際上*工程*雖然?不要假設它會直到你嘗試過它:)我相當擅長預測LINQ to Objects如何表現,但我對Entity Framework的經驗很少(基本上爲零)。 – 2012-04-04 07:14:24
另外,我應該提到這個查詢確實不會去SQL Server。我用分號分隔的字符串創建了一個標籤集合(因爲它在這裏:https://github.com/tugberkugurlu/MvcBloggy/blob/master/src/MvcBloggy.Data/DataAccess/SqlServer/Model/BlogPost.cs)。所以,它用'GetAll'獲取整個數據(是的,這是一個非常糟糕的方法,但我無法找出其他方法),並進行查詢。所以,Objetcs主要是Linq。 – tugberk 2012-04-04 07:19:19