首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq 查询 序列为空的错误如何避免

2012-09-10 
linq 查询 序列为空的异常如何处理?var lst GetCache(AAA) as AAA[]var l lst.Where(s s.Name

linq 查询 序列为空的异常如何处理?
var lst = GetCache("AAA") as AAA[];

var l = lst.Where(s => s.Name== name && s.Address == address).Select(s => new { key = s.Name, value = s.Address,tel=s.Tel}).Distinct().Max(s=>s.tel);

请教各位 

lst.Where(s => s.Name== name && s.Address == address).Select(s => new { key = s.Name, value = s.Address,tel=s.Tel}).Distinct().Max(s=>s.tel);


以上语句报System.InvalidOperationException: 序列不包含任何元素 
该如何处理

[解决办法]
可以用 DefaultIfEmpty 或者FirstOrDefault 为空序列创建默认元素
参考http://www.cnblogs.com/ASPNET2008/archive/2008/12/17/1356841.html


[解决办法]
var lst = GetCache("AAA") as AAA[];

var l = lst.Where(s => s.Name== name && s.Address == address).Select(s => new { key = s.Name, value = s.Address,tel=s.Tel}).Distinct().OrderBy(s=>s.tel);
if(l.Count()>0)
{
var mx=l.First().tel;
}
[解决办法]
因为你期中的步骤可能选出的为空,那么如果在此基础上再去选择就会报错,比 Select没有选出数据,在使用Distinct就可能出错

热点排行