Hom*_*mam 8 c# linq linq-to-objects
我有一个匿名类的集合,我想返回一个空列表.
什么是最好的可读表达式?
我虽然如下,但我认为它们不够可读:
var result = MyCollection.Take(0).ToList();
var result = MyCollection.Where(p => false).ToList();
Run Code Online (Sandbox Code Playgroud)
注意:我不想清空集合本身.
任何建议!
小智 35
关于:
Enumerable.Empty<T>();
Run Code Online (Sandbox Code Playgroud)
这将返回一个类型为T的空枚举.如果您真的需要List,那么您可以自由地执行此操作:
Enumerable.Empty<T>().ToList<T>();
Run Code Online (Sandbox Code Playgroud)
mmi*_*mix 13
实际上,如果你使用通用扩展,你甚至不必使用任何Linq来实现这一点,你已经通过T暴露了匿名类型
public static IList<T> GetEmptyList<T>(this IEnumerable<T> source)
{
return new List<T>();
}
var emp = MyCollection.GetEmptyList();
Run Code Online (Sandbox Code Playgroud)
Rob*_*ine 10
鉴于您的第一个建议有效且应该表现良好 - 如果可读性是唯一的问题,为什么不创建扩展方法:
public static IList<T> CreateEmptyCopy(this IEnumerable<T> source)
{
return source.Take(0).ToList();
}
Run Code Online (Sandbox Code Playgroud)
现在你可以重构你的例子了
var result = MyCollection.CreateEmptyCopy();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26099 次 |
| 最近记录: |