Min*_*amy 7 c# linq ienumerable
分组集合时,我有以下情况:
var result = data.GroupBy(x => x.Name.Split(new char[] { '-' })[1].Trim());
数据变量的类型 ObservableCollection<Data>
当我检查
if(result.Count()>0)
它抛出一个IndexOutOfRangeException
当然这是因为字符串拆分操作会引发异常.
问题是:有没有办法检查分组的结果是否为空并避免异常?
Tim*_*ter 10
首先,Enumerable.Count只执行延迟执行的LINQ查询(GroupBy使用延迟执行,查看备注部分).所以Count不要怪这里.
您正在拆分-并在索引1处访问此数组,这是第二个项目.显然没有第二项,因为没有-.所以它与之无关null.
也许只有那些有第二个令牌的那个就足够了:
var result = data
.Select(x => new{ Data = x, Split = x.Name.Split(new char[] { '-' }) })
.Where(x => x.Split.Length >= 2)
.GroupBy(x => x.Split[1].Trim());
或者第二个如果有第二个,否则第一个:
var result = data
.Select(x => new{ Data = x, Split = x.Name.Split(new char[] { '-' }) })
.GroupBy(x => x.Split.Length >= 2 ? x.Split[1].Trim() : x.Split[0].Trim());
| 归档时间: | 
 | 
| 查看次数: | 318 次 | 
| 最近记录: |