我得到一个查询,我想过滤掉存储在字符串数组中的一些值。
查询:
public IQueryable<ProductModel> GetProductQuery()
{
var query = from product in DataContext.tProduct
select new ProductModel() {
ProductId = product.ProductId,
ProductName = product.ProductName,
Categories = product.tLinkProductCategory.Select(c => new CategoryModel
{
CategoryID = c.tCategory.CategoryId,
CategoryName = c.tCategory.CategoryName
})
};
string[] categories = new[] {"A", "B"};
query = query.Where(c => categories.Contains(c.Categories.CategoryName..)) //??
return query;
}
我可以用.Contains解决这个问题吗?
答案 0 :(得分:2)
使用Any
Linq
扩展名即可实现此目标。
query = query.Where(c => categories.Any(x=> x == c.Categories.CategoryName));
如果有选择,我更喜欢使用HastSet
而不是字符串数组,这允许进行O(1)访问。当规模变大时,您可能会看到性能大幅提升。
HashSet<string> categories = new HashSet<int>();
query = query.Where(c => categories.Contain(c.Categories.CategoryName));
答案 1 :(得分:1)
@Hari Prasad是关于Server = "swipe.example.com";
Username = "example@swipe.example.com";
Password = <Some Password>;
DatabasePath = "swipe.example.com/database.sqlite";
的,但正确的查询是:
Any