相关疑难解决方法(0)

LINQ如果数组为空则返回null

public class Stuff
{
  public int x;
  // ... other stuff
}
Run Code Online (Sandbox Code Playgroud)

我有一个IEnumerable<Stuff>和我想建立一个int[]所有的x所有的属性Stuff集合中的对象.

我做:

IEnumerable<Stuff> coll;
// ...
var data = coll.Select(s => s.x).ToArray();
Run Code Online (Sandbox Code Playgroud)

我想要的是一个空数组,而不是int[0]如果该集合为空.换句话说,如果!coll.Any(),那么我想要data = null.(我实际需要的是coll复杂LINQ表达式的中间结果,我想在表达式链上使用LINQ操作,而不是保存中间结果)

我知道这int[0]null在许多情况下更令人满意,但我存储了许多这些结果,并且宁愿传递而nulls不是空数组.

所以我目前的解决方案是这样的:

var tmp = coll.Select(s => s.x).ToArray();
int[] data = tmp.Any() ? tmp : null;
Run Code Online (Sandbox Code Playgroud)

没有存储的任何方式tmp吗?

编辑:主要问题是如何在不存储中间结果的情况下执行此操作.喜欢的东西NULLIF()T-SQL那里你回到你所传递的,如果条件是假的,NULL如果条件为真.

c# linq linq-to-objects

7
推荐指数
1
解决办法
6570
查看次数

标签 统计

c# ×1

linq ×1

linq-to-objects ×1