C# 在字符串中搜索特定值
我试图在字符串中搜索特定值 我要做的是拆分字符串并查看每个值。 如果mySearch.EQUALS(拆分字符串值),则返回ToList()中的记录 这是我的密码。。它返回零条记录C# 在字符串中搜索特定值,c#,linq,C#,Linq,我试图在字符串中搜索特定值 我要做的是拆分字符串并查看每个值。 如果mySearch.EQUALS(拆分字符串值),则返回ToList()中的记录 这是我的密码。。它返回零条记录 // user search for sku = "2012" // p.productMatch in DB = "2012,2012L,2012LR,2011" var result = ctx.Products .Where(p => p.clientID == Config.ClientID) .W
// user search for sku = "2012"
// p.productMatch in DB = "2012,2012L,2012LR,2011"
var result = ctx.Products
.Where(p => p.clientID == Config.ClientID)
.Where(p => p.productMatch.Contains(sku))
.Select(v => new ProductView
{
productID = v.productID,
productMatch = v.productMatch,
productSKU = v.productSKU
}).ToList();
var results = from w in result
where w.productMatch.Split(',').Equals(sku)
select w;
return results.ToList();
目前,在
中,其中w.productMatch.Split(',').Equals(sku)
行中,您将Split()
(字符串数组)的结果与单个字符串sku
进行比较。由于显而易见的原因,这种做法失败了。只需将其更改为:
where w.productMatch.Split(',').Contains(sku)
目前,在
中,其中w.productMatch.Split(',').Equals(sku)
行中,您将Split()
(字符串数组)的结果与单个字符串sku
进行比较。由于显而易见的原因,这种做法失败了。只需将其更改为:
where w.productMatch.Split(',').Contains(sku)
在代码中,您正在对
Split
操作生成的string[]
数组和sku
变量执行相等比较。由于两者类型不同,平等性比较永远不会成功
实际上,您需要做的是将字符串[]
数组的每个元素与sku
进行比较:
var results =
from w in result
from part in w.productMatch.Split(',')
where part.Equals(sku)
select part;
如果要返回整个记录,请使用:
var results =
from w in result
where w.productMatch.Split(',').Any(part => part.Equals(sku))
select w;
或者,更好的方法是使用@jimmy_keen建议的
Contains
方法,以获得更简洁的代码。在代码中,您正在对Split
操作生成的字符串[]
数组和sku
变量执行相等比较。由于两者类型不同,平等性比较永远不会成功
实际上,您需要做的是将字符串[]
数组的每个元素与sku
进行比较:
var results =
from w in result
from part in w.productMatch.Split(',')
where part.Equals(sku)
select part;
如果要返回整个记录,请使用:
var results =
from w in result
where w.productMatch.Split(',').Any(part => part.Equals(sku))
select w;
或者,更好的方法是使用@jimmy_keen建议的
Contains
方法来获得更简洁的代码。您还可以在第一个查询中删除ToList()
。您也可以在第一个查询中删除ToList()
。