Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字符串中搜索特定值_C#_Linq - Fatal编程技术网

C# 在字符串中搜索特定值

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

我试图在字符串中搜索特定值

我要做的是拆分字符串并查看每个值。 如果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)
 .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()