多次返回特定结果

时间:2014-02-02 18:58:27

标签: c# linq

我想使用where子句返回一些数据。但是,我希望根据特定属性的内容多次返回一些数据。

进一步解释 - 假设数据类似于以下内容:

int objectID
int multipleTimes,
string someData

5|3|"Hello"
6|2|"Bye"
7|1|"Howdy"

基本上,当我返回这个数据子集时,我希望第二个(“Bye”)出现在结果列表中两次,而第一个出现三次。

我如何使用linq执行此操作?

1 个答案:

答案 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))