Check包含基于逗号分隔值的条件.. NET Core MVC



我有一个问题:我有两个数组值,一个是自定义类对象,它具有变量分类代码,另一个是该分类类型的值数组。我需要检查值是否存在于分类代码数组和组合结果,使一个结果。值可以是多个或单个,基于此我需要将它们放入contains过滤器。

例如,目前对于单个值,代码为。

private List<Result> FilterbyClassification(List<Result> results)
{
var classificationCodes = "C, R".Split(",").ToList();
return results.Where(f => classificationCodes.All(f.ClassificationCode.Contains)).ToList();
}

它现在没有给我任何值。你能帮帮我吗

您需要检查的几件事:

  1. 删除classificationCodes声明中的空白
var classificationCodes = "C,R".Split(",").ToList();
  1. 更改您的Linq使用Any而不是All,并使用分类代码的比较。这应该会给你结果:
// items: 
var items = new List<Result>
{
new Result { ClassificationCode = "C", Id = 1},
new Result { ClassificationCode = "C", Id = 2},
new Result { ClassificationCode = "R", Id = 3},
new Result { ClassificationCode = "A", Id = 4}
};
var classificationCodes = "C,R".Split(",").ToList();
var data = items.Where(x => classificationCodes.Any(y => y == x.ClassificationCode)).ToList();
Console.WriteLine(JsonSerializer.Serialize(data));

// Output
[{"Id":1,"ClassificationCode":"C"},{"Id":2,"ClassificationCode":"C"},{"Id":3,"ClassificationCode":"R"}]

或者,您也可以创建一个linq连接:


var data = from i in items
join cc in classificationCodes on i.ClassificationCode equals cc
select new Result {ClassificationCode = i.ClassificationCode, Id = i.Id};

var data = items.Join(classificationCodes, i => i.ClassificationCode, cc => cc,
(i, cc) => new Result {ClassificationCode = i.ClassificationCode, Id = i.Id});

最新更新