我想使用where子句返回一些数据。但是,我希望根据特定属性的内容多次返回一些数据。
进一步解释 - 假设数据类似于以下内容:
int objectID
int multipleTimes,
string someData
5|3|"Hello"
6|2|"Bye"
7|1|"Howdy"
基本上,当我返回这个数据子集时,我希望第二个(“Bye”)出现在结果列表中两次,而第一个出现三次。
我如何使用linq执行此操作?
答案 0 :(得分:2)
var result = source.Select(x => Enumerable.Repeat(x.someData, x.multipleTimes))
.SelectMany();
返回重复List<string>
属性值的someData
。
更短的版本(由BartoszKP提供):
var result = source.SelectMany(x => Enumerable.Repeat(x.someData, x.multipleTimes))
<强>更新强>
如果您希望result
包含整个对象,不仅string
属性来自someData
,请使用以下内容:
var result = source.SelectMany(x => Enumerable.Repeat(x, x.multipleTimes))