【问题标题】:How can I use ":" in LINQ group by conditions [closed]如何按条件在 LINQ 组中使用“:”[关闭]
【发布时间】:2018-04-01 10:04:20
【问题描述】:

我有 2 个变量使用类似条件在数据列表中分组 字符串文件编号 = ""; 字符串文件名 = "";

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

我想确保 FileNo 和 FileName 不为空,然后我将在 group by 中使用它们

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

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

【问题讨论】:

  • 您只想排除带有空白FileNoFileName 的项目?
  • 你为什么使用 group by ?
  • 您在寻找三元运算符吗? "".Equals(x.FileNo) ? "blank" : x.FileNo

标签: c# linq group-by


【解决方案1】:

您正试图以错误的方式解决错误的别名问题:与其按由两部分组成的单个字符串进行分组 $"{FileNo}:{FileName}",不如按通常的 LINQ 方式对一对字符串进行分组:

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

【讨论】:

    【解决方案2】:

    试试

     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 等)中这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多