假设我有构造函数
public SomeObject(string first, string second);
和两个string[]
数组
string[] arrayOne = new[] { firstOne, firstTwo };
string[] arrayTwo = new[] { secondOne, secondTwo, secondThree};
如何返回IEnumerable
或IList
每个元素都是由两个数组元素组合而成的新SomeObject
?目前,我正在使用
IEnumerable<SomeObject> newEnumerable = from stringOne in arrayOne from stringTwo in arrayTwo select new SomeObject(stringOne, stringTwo);
但我更喜欢像
这样的东西IEnumerable<SomeObject> newEnumerable = arrayOne.Select(stringOne => arrayTwo.Select(stringTwo => new SomeObject(stringOne, stringTwo));
但最后一个返回IEnumerable<IEnumerable<SomeObject>>
,当然,这不是我想要的。
答案 0 :(得分:1)
目前还不清楚你想要什么 - 如果你只是在寻找不使用查询表达式语法的第一个查询的版本,你想要:
var query = arrayOne.SelectMany(x => arrayTwo, (a, b) => new SomeObject(a, b));
这基本上就是你的查询表达式被扩展到了什么。
如果那个不是你想要什么,请让你的问题更清晰。如果你想要一个数组,只需调用ToArray:
var array = arrayOne.SelectMany(x => arrayTwo, (a, b) => new SomeObject(a, b))
.ToArray();
答案 1 :(得分:1)
您可以使用SelectMany()
var newEnumerable =
arrayOne.Select(stringOne => arrayTwo.Select(stringTwo => new SomeObject(stringOne, stringTwo)).SelectMany(x => x);