在 Linq 中有没有办法为匹配条件的第一个选定事件设置一个值?
我知道我没有解释清楚,但是举个例子:
var mySelectedObjects = allMyObjects.OrderBy(o.Date).Select(o => new ObjectType
{
Element1 = o.Element1,
Element2 = o.Element2,
Date = o.Date,
BooleanElement = o.BooleanElement && ThisIsTheFirstTrue
};
因此在上面的示例中,所需的输出结果是 mySelectedObjects
中的 BooleanElement
项仅在 第一次 出现时为真allMyObjects
(按 日期
排序)为真,其余部分为假,无论它们在 allMyObjects
中的值如何。
即我只想在 mySelectedObjects
中出现一个(最早的)BooleanElement
= true。我应该用什么替换 ThisIsTheFirstTrue
?
编辑
我意识到这可以在选择之后使用 for
循环来完成,但我希望在选择中完成这一切。
无论如何只是为了回应建议而澄清。我希望它在输入中第一次出现时为真,而不仅仅是第一次出现,例如,如果输入数据是...
false
true
false
true
true
false
我想要的输出是
false
true
false
false
false
false
最佳答案
所以使用 Linq
:
bool found = false;
var mySelectedObjects = objects
.OrderBy(o => o.Date)
.Select(o => new ObjectType
{
Element1 = o.Element1,
Element2 = o.Element2,
Date = o.Date,
BooleanElement = !found && o.BooleanElement ? (found = true) : false
}
);
关于c# - Linq 选择 : Set specific value for first occurrence only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065063/