C# 从字符串数组中搜索并忽略完全匹配的字符串
如何使用linq查询忽略字符串数组中的精确匹配 这是我的密码怎么了C# 从字符串数组中搜索并忽略完全匹配的字符串,c#,linq,C#,Linq,如何使用linq查询忽略字符串数组中的精确匹配 这是我的密码怎么了 public string GetItems(string SearchText, Int64 userID, Int64 orgID, Int64 locationID, string[] selectedProductName) { List<Product> searchList = new List<Product>(); string jsonText = ""; try
public string GetItems(string SearchText, Int64 userID, Int64 orgID, Int64 locationID, string[] selectedProductName)
{
List<Product> searchList = new List<Product>();
string jsonText = "";
try
{
searchList = dbContext.usp_ang_GetProductList_(orgID, SearchText, locationID, 0).ToList();
var abc = searchList.Where(a => a.Name.Any(a.Name != selectedProductName).ToList();
jsonText = JsonConvert.SerializeObject(abc);
}
catch (Exception ex)
{
}
return jsonText;
}
public string GetItems(string SearchText、Int64 userID、Int64 orgID、Int64 locationID、string[]selectedProductName)
{
列表搜索列表=新列表();
字符串jsonText=“”;
尝试
{
searchList=dbContext.usp_ang_GetProductList_(orgID,SearchText,locationID,0).ToList();
var abc=searchList.Where(a=>a.Name.Any(a.Name!=selectedProductName.ToList();
jsonText=JsonConvert.SerializeObject(abc);
}
捕获(例外情况除外)
{
}
返回jsonText;
}
您需要检查名称是否不在selectedProductName
列表中,为此,您可以使用Contains
子句
var abc = searchList.Where(a => !selectedProductName.Contains(a => a.Name )).ToList();
为了获得更好的性能,您可以在一个语句中完成所有事情
var abc = dbContext.usp_ang_GetProductList_(orgID, SearchText, locationID, 0)
.Where(a => !selectedProductName.Contains(a.Name)).ToList();
您使用的
。任何都不正确:
在当前使用中,您正在检查字符的是否有任何
构造a.name
匹配某个谓词
.Any(a.Name!=selectedProductName)
-您需要形成格式正确的lambda表达式
您要检查selectedProductName
数组中的任何值是否等于a.Name
var abc = searchList.Where(a => !selectedProductName.Any(name => name == a.Name)).ToList();
因为selectedProductName
是一个字符串[]
,所以只需使用。包含:
var abc = searchList.Where(a => !selectedProductName.Contains(a.Name)).ToList();
此外,将所有数据从数据库中带出来只是为了过滤后面的行,这也是一种耻辱。如果删除ToList()
过滤将在数据库中进行:
var abc = dbContext.usp_ang_GetProductList_(orgID, SearchText, locationID, 0)
.Where(a => !selectedProductName.Contains(a.Name)).ToList();
问题还不清楚。你所说的“精确匹配”是什么意思?@GiladGreen:假设字符串数组selectedProductName有任何类似“Orange”或“Apple”的名称,那么它将忽略那些stringselectedProductName是一个string@AdrianIftode-感谢您修复输入错误:)