Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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,如何使用linq查询忽略字符串数组中的精确匹配 这是我的密码怎么了 public string GetItems(string SearchText, Int64 userID, Int64 orgID, Int64 locationID, string[] selectedProductName) { List<Product> searchList = new List<Product>(); string jsonText = ""; try

如何使用linq查询忽略字符串数组中的精确匹配

这是我的密码怎么了

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-感谢您修复输入错误:)