【发布时间】:2015-07-27 14:56:24
【问题描述】:
从 C# 中的 Enumerable 中准确获取 x 值的最佳方法是什么。 如果我像这样使用 Enumerable .Take():
var myList = Enumerable.Range(0,10);
var result = myList.Take(20);
结果将只有 10 个元素。
我想用默认值填充缺失的条目。 像这样的:
var myList = Enumerable.Range(0,10);
var result = myList.TakeOrDefault(20, default(int)); //Is there anything like this?
C# 中是否有这样的功能,如果没有,实现此功能的最佳方法是什么?
【问题讨论】:
-
为什么不写一个扩展方法来检查计数并返回剩余条目的默认值?
-
@Jamiec 如果其他人已经回答了,那么回答错了吗?我评论说它可以通过扩展方法完成并坐下来制定答案。我花了一些时间,但是如果我写了一些东西,我会发帖
-
@GaneshR。 - 一点都不。但是你可能想回来删除你的评论,否则看起来有点奇怪
-
@MattiVirkkunen 从技术上讲,是的。但在语义上,它是非常不同的。当然,它对于没有简单文字的类型(如
default(string)或default(DateTime))更有用。同样重要的是,您可以将default(T)与泛型一起使用。 -
@MattiVirkkunen 你和我不同意什么更易读——
DateTime.MinValue对我有明确的意义,说“这是日期时间可以拥有的最低值”。default(DateTime)说“这是默认值”。null没有字符串文字。string.Empty是一个空字符串(你使用string.Empty还是""?@""?)。default(string)是null类型的string- 对于类型推断非常重要。最初设计的功能并不重要 - 重要的是它实际上擅长做什么:)
标签: c# .net linq ienumerable take