C# Linq搜索从逗号分隔字符串到双精度字符串

C# Linq搜索从逗号分隔字符串到双精度字符串,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,使用MVC。在我的表单中,我有一个文本框,用户将在其中以这种方式输入项目代码 100101102 基本上,我需要查询表 if (!String.IsNullOrEmpty(searchItemcode)) { var itemList = searchItemcode.Split(',').Select(p => p.Trim()); priceHistory = priceHistory.Where(s => itemList.Contains(s.ITEM_CO

使用MVC。在我的表单中,我有一个文本框,用户将在其中以这种方式输入项目代码 100101102

基本上,我需要查询表

if (!String.IsNullOrEmpty(searchItemcode))
{

    var itemList = searchItemcode.Split(',').Select(p => p.Trim());
    priceHistory = priceHistory.Where(s => itemList.Contains(s.ITEM_CODE));
}
但在DB中,我的字段是双字段,这不起作用。我在想可能是创建一个列表?那么在我的linq中使用它

您是否尝试过:

if (!String.IsNullOrEmpty(searchItemcode))
{
    var itemList = searchItemcode.Split(',').Select(p => double.Parse(p.Trim()));
    priceHistory = priceHistory.Where(s => itemList.Contains(s.ITEM_CODE));
}

它应该给你双倍。在你
之前选择(p=>double.Parse(p))
。它在哪里?谢谢,但是我仍然在itemList.Contains下面得到相同的错误下划线。错误是:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable”。我还尝试了Where(s=>itemList.Contains((double)s.ITEM_代码));但这只会给出一项的结果。您的类型中有一个可为空的double,而不是double。您可以将其强制转换为null,例如:
i.Select(x=>(double?).double.Parse(x.ToString())
。如果需要IQueryable,也可以调用
.AsQueryable()
。如果不想在字符串实际上不是双精度的情况下生成异常,可以使用
Select(p=>{double value;double.TryParse(p.Trim(),out value);return value;})
@MattKo+1。永远不要相信用户输入。。。曾经但是,为了简单起见,上面的答案为他/她指明了道路。您还可以添加一个select where type=int,然后解析也可以了。。。