c# - LINQ 中的 GroupBy 保证

标签 c# .net linq

GroupBy 是否保证在结果和组上“foreach”是安全的?

var groupResult = list.GroupBy();


if(guarantees == false) // want to remove this check
   if(groupResult==null)
      return;

foreach(var group in groupResult)
{
    if(guarantees == false)
        if(group==null || group.Count()==0)
           continue;

    foreach(var element in group)
    {

         //do something
    }
}

GroupBy 结果是否始终保证为非空,如果 GroupBy 中存在任何组,我们是否可以假定该组为非空?

换句话说,我可以假设 guarantees 总是正确的吗?

最佳答案

还可以查看集合中有多少个元素(组本身是一个集合,groupResult中的所有组也是一个集合)。所以你可以检查是否有元素。

看看下面的代码:

if(groupResult.Count() > 0) { }
foreach (var group in groupResult)
    if(group.Count() > 0) { }

结合检查 null 值:

if(group != null && group.Count() > 0) { }

这里短路将保证如果 groupnull 那么它不会检查第二个条件,在这种情况下可能会抛出异常。

关于c# - LINQ 中的 GroupBy 保证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53850219/

相关文章:

c# - 编码 C# 结构数组并在 COM 中使用它 - 什么是正确的编码属性

c# - 在现有接口(interface)上应用 ServiceContract 和 OperationContract

c# - 加入多对多表

c# - 抛出新的 Exception 与 Catch block

c# - 如何在您的 Asp.net 应用程序中获取最新的货币汇率

c# - 我应该从哪里升级到来自 .NET 2.0/WinForms 背景的复杂 .NET 3.5 和 WPF 应用程序?

.net - 如何根据 objectGUID 获取 AD 用户的 'memberof' 属性值?

c# - 如何按周对日期进行分组?

c# - 组合两个表达式 (Expression<Func<T, bool>>)

c# - 为什么使用 .NET 框架的程序比非托管代码中的相同程序小?