C# 比重复异常过滤器更好的方法?

C# 比重复异常过滤器更好的方法?,c#,linq,C#,Linq,可以这样编写代码,但无需重复用户异常过滤器 foreach (var val in users) { if (val.Any(x => x.UserException.Contains("QPZ") || x.UserException.Contains("QPR"))) { listUsers.Add( val?.First( s => s.UserException.Contains("QPZ") ||

可以这样编写代码,但无需重复用户异常过滤器

 foreach (var val in users)
 {
    if (val.Any(x => x.UserException.Contains("QPZ") || x.UserException.Contains("QPR")))
    {
        listUsers.Add(
        val?.First( s => s.UserException.Contains("QPZ") || 
                         s.UserException.Contains("QPR")));
    }
    else
    {
        listUsers.AddRange(val);
    }
 }

您可以使用异常列表并对照以下内容进行检查:

var exceptionList = new List<string> {
  "QPZ",
  "QPR"
};

foreach (var val in users)
 {
    if (val.Any(x => exceptionList.Contains(x.UserException))
    {
        listUsers.Add(
           val?.First(s => exceptionList.Contains(x.UserException))
        );
    }
    else
    {
        listUsers.AddRange(val);
    }
 }
var exceptionList=新列表{
“QPZ”,
“QPR”
};
foreach(用户中的var val)
{
if(val.Any(x=>exceptionList.Contains(x.UserException))
{
listUsers.Add(
val?.First(s=>exceptionList.Contains(x.UserException))
);
}
其他的
{
listUsers.AddRange(val);
}
}

您可以使用异常列表并检查:

var exceptionList = new List<string> {
  "QPZ",
  "QPR"
};

foreach (var val in users)
 {
    if (val.Any(x => exceptionList.Contains(x.UserException))
    {
        listUsers.Add(
           val?.First(s => exceptionList.Contains(x.UserException))
        );
    }
    else
    {
        listUsers.AddRange(val);
    }
 }
var exceptionList=新列表{
“QPZ”,
“QPR”
};
foreach(用户中的var val)
{
if(val.Any(x=>exceptionList.Contains(x.UserException))
{
listUsers.Add(
val?.First(s=>exceptionList.Contains(x.UserException))
);
}
其他的
{
listUsers.AddRange(val);
}
}

您可以通过将
Any(过滤器)
+
First(过滤器)
替换为
FirstOrDefault(过滤器)
+
null
检查:

foreach (var val in users)
{
    var match = val.FirstOrDefault(x => 
        x.UserException.Contains("QPZ") || x.UserException.Contains("QPR"));
    if (match != null)
    {
        listUsers.Add(match);
    }
    else
    {
        listUsers.AddRange(val);
    }
 }

通过将
Any(filter)
+
First(filter)
替换为
First或default(filter)
+
null
检查:

foreach (var val in users)
{
    var match = val.FirstOrDefault(x => 
        x.UserException.Contains("QPZ") || x.UserException.Contains("QPR"));
    if (match != null)
    {
        listUsers.Add(match);
    }
    else
    {
        listUsers.AddRange(val);
    }
 }

多亏了Ivan和JanR,我找到了问题的答案,非常感谢

var exceptionList = new List<string> {"QPZ","QPR"};

foreach (var val in users)
{

 var match = val.FirstOrDefault(x => exceptionList.Contains(x.UserException));

   if (match != null)
   {
      usersList.Add(match);
   }
   else
   {
      usersList.AddRange(val);
   }
}
var exceptionList=新列表{“QPZ”,“QPR”};
foreach(用户中的var val)
{
var match=val.FirstOrDefault(x=>exceptionList.Contains(x.UserException));
如果(匹配!=null)
{
usersList.Add(匹配);
}
其他的
{
usersList.AddRange(val);
}
}

多亏了伊万和詹,我找到了问题的答案,非常感谢

var exceptionList = new List<string> {"QPZ","QPR"};

foreach (var val in users)
{

 var match = val.FirstOrDefault(x => exceptionList.Contains(x.UserException));

   if (match != null)
   {
      usersList.Add(match);
   }
   else
   {
      usersList.AddRange(val);
   }
}
var exceptionList=新列表{“QPZ”,“QPR”};
foreach(用户中的var val)
{
var match=val.FirstOrDefault(x=>exceptionList.Contains(x.UserException));
如果(匹配!=null)
{
usersList.Add(匹配);
}
其他的
{
usersList.AddRange(val);
}
}