在 LINQ 中使用命名元组数组

D.R*_*.R. 5 c# linq tuples

我尝试在 LINQ(LINQ 到对象)查询中使用命名元组数组,如下所示:

(int from, int to)[] inputRanges = { (1,2), (3,4) };

var result = from range in inputRanges
             select Enumerable.Range(range.from, range.to - range.from + 1);
return result.SelectMany(x => x);
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个编译器错误,告诉我range没有成员from,而是需要逗号,而不是.from

我究竟做错了什么?命名元组和 LINQ-to-objects 不能组合吗?

Gil*_*een 4

问题是fromlinq 使用关键字来迭代集合 ( ) 的项目from item in collection ...

要解决这个问题,请@from在 linq 中使用:

var result = from range in inputRanges
             select Enumerable.Range(range.@from, range.to - range.@from + 1);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请@参阅:C# 用 @ 为参数名称添加前缀。IMO 在这种情况下使用属性名称from是可以的,但我确实认为一般来说这是一个不好的做法。