如何将DataTable的Last()结果转为IEnumerable<DataRow>传入方法?
解决DataTable.Last()转IEnumerable的问题
你遇到的核心问题很明确:data.AsEnumerable().Last()返回的是单个DataRow实例,但你的Set方法要求的是IEnumerable<DataRow>类型的集合,类型不匹配自然会报错。下面给你几个简单可行的解决方案:
用
Enumerable.Repeat快速包装
这个方法可以把单个元素转换成包含该元素的序列,代码简洁直接:Set(Enumerable.Repeat(data.AsEnumerable().Last(), 1));手动创建数组/List包装
这种方式更直观,一眼就能看懂逻辑:// 数组方式 Set(new[] { data.AsEnumerable().Last() }); // List方式 Set(new List<DataRow> { data.AsEnumerable().Last() });健壮性优化:处理空表情况
如果你的DataTable可能为空,直接用Last()会抛出异常,建议搭配LastOrDefault()做判断:var lastRow = data.AsEnumerable().LastOrDefault(); if (lastRow != null) { Set(new[] { lastRow }); } // 这里可以补充else逻辑,比如处理空集合的情况
内容的提问来源于stack exchange,提问作者ManInMoon
相关产品推荐
相关产品推荐

