c# - Linq 选择 : Set specific value for first occurrence only

标签 c# linq

在 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
    }
);

Online check

关于c# - Linq 选择 : Set specific value for first occurrence only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065063/

相关文章:

c# - 将 int 上的无效转换异常加倍

c# - 使用 Enumerable.Range() 填充字典时出现问题

c# - 使用不在数据库中的属性的动态 OrderBy() 会引发异常

c# - 具有非空外键(HasMany)的流畅 nhibernate 映射

c# - 如何根据 RadioButtonList 选择确定 TextBox 将执行的操作 - 使用 JavaScript

linq - 当他们说 LINQ 是可组合的时,他们是什么意思?

c# - IIS 6.0 DirectoryEntry ScriptMaps 属性并设置.Net 版本

c# - Task.Run 不像 Thread.start 那样工作

c# - 如何从 IQueryable<T> 获取原始集合

c# - LINQ to Entities 中的 Enum.HasFlag?