我尝试在 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 不能组合吗?
问题是from
linq 使用关键字来迭代集合 ( ) 的项目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
是可以的,但我确实认为一般来说这是一个不好的做法。