LINQ to SQL查询字符串StartsWith来自通用列表的元素

我正在寻找更新我的一个查询,因为搜索的要求已经改变。 最初,用户要输入单个SKU和制造商。 日期范围以搜索产品目录。 所以这就是我用过的东西。

DateTime startDate = ...; DateTime endDate = ...; string prodSKU = TextSKU.Text.Trim(); var results = from c in db.Products where c.is_disabled == false && c.dom >= startDate && c.dom <= endDate && c.sku.StartsWith(prodSKU) select c; 

现在要求说用户可以在文本框中输入逗号分隔的SKU列表进行搜索。 我感到困惑的是如何在制造商中找到所有产品。 以skuList中的任何SKU开头的日期范围(没有使用fornext循环)。

 string prodSKU = TextSKU.Text.Trim(); List skuList = prodSKU.Split(new char[] { ', ' }).ToList(); var results = from c in db.Products where c.is_disabled == false && c.dom >= startDate && c.dom <= endDate // && c.sku.StartsWith(prodSKU) select c; 

任何想法将不胜感激!

就像是

 string prodSKU = TextSKU.Text.Trim(); List skuList = prodSKU.Split(new char[] { ', ' }).ToList(); var results = from c in db.Products where c.is_disabled ==false && c.dom >= startDate && c.dom <= endDate && skuList.Any(sl=>c.sku.StartsWith(sl)) select c; 
 string prodSKU = TextSKU.Text.Trim(); List skuList = prodSKU.Split(new char[] { ', ' }).ToList(); var results = from c in db.Products where c.is_disabled == false && c.dom >= startDate && c.dom <= endDate && skuList.Contains(c.sku) select c; 

编辑:即使这个问题已经回答,我也会把它放在这里。

我实现了与已接受的解决方案相同的function,但使用扩展方法来提高可读性:

 public static class StringExtensions { public static bool StartsWithAny(this string s, IEnumerable items) { return items.Any(i => s.StartsWith(i)); } } 

然后解决方案是:

 var results = from c in db.Products where c.is_disabled == false && c.dom >= startDate && c.dom <= endDate && c.sku.StartsWithAny(skuList) select c;