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;
- 获取计算机的MAC地址
- ActionLink包含URL中的当前{id}
- WPF:Slider不会引发MouseLeftButtonDown或MouseLeftButtonUp
- FTP,GetResponse(),错误550文件不可用
- 在Xamarin Cross Platform Application中使用WCF服务
- 如何首先使用迁移向Entity Framework 4.3代码中的列添加描述?
- 随着进度备份SQL Server数据库
- 通过System.DirectoryServices管理终端用户
- 在部署.net核心应用程序时,HTTP错误500.19,错误代码0x8007000d visual studio 2017