如何在条件中在LINQ组中使用“:”

时间:2017-10-20 08:55:04

标签: c# linq group-by

我有两个变量使用条件来分组数据列表     string FileNo =“”;     string FileName =“”;

因为FileNo和FileName可能为空 所以当我有一个数据列表如下所示:     List DataList = new List();

我想确保FileNo和FileName不为空,然后我将在

组中使用它们

我不知道如何将它们嵌入到LINQ语法中。有些看起来像这样:

var TotalDuplicate = GridList.GroupBy(x,y => "".Equals(FileNo) : x.FileNo, 
                                             "".Equals(FileName) : y.FileName
                        .Count(x => x.Count() > 1);

2 个答案:

答案 0 :(得分:3)

您正在尝试以错误的方式解决错误的别名问题:而不是按照由$"{FileNo}:{FileName}"两个部分组成的单个字符串进行分组,使用通常的LINQ方式对一对字符串进行分组:

var duplicates = GridList
    .GroupBy(x => new { x.FileNo, x.FileName })
    .Count(g => g.Count() > 1);

答案 1 :(得分:1)

尝试

 List<string> x = new List<string>() { "", "pp", "jj", "kjj", "", "" };
 foreach (string s in x.Select(xx => string.IsNullOrEmpty(xx) ? "Empty" : "Populated"))
 {
     Console.WriteLine(s);
 }

输出:

  

空   人口稠密   人口稠密   人口稠密   空   空

我在Select语句中做了什么,你也可以在其他linq语句中做到这一点(Where,Group etc)