【发布时间】:2014-04-14 13:38:53
【问题描述】:
我正在写一个汇总的状态列表。除了没有的情况外,它工作正常。目前渲染的是null,位置为空。
item.Stuff.Where(e => Condition(e))
.Select(f => f.Status)
.Aggregate("---", (a, b) => (a == "---") ? b : (a + b));
我有a suggestion for solution and improvement 如下。
[Flags]
enum Status
{
None = 0,
Active = 1,
Inactive = 2,
Pending = 4,
Deleted = 8
}
item.Stuff.Where(e => Condition(e))
.Aggregate(Status.None, (a, b) => a | b.Status)
因为我非常喜欢更简单的语法,所以我喜欢跳过 Select 部分。但是,现在的结果并不是列出的所有元素。事实上,只列出了一个(而不是之前的五个),并且 None 出现在之前有一个状态的地方。
也许是我太脑残了,但我不明白为什么。因此,这不是我应该做的,也不是...... :(
【问题讨论】:
-
状态来自哪里?如果它们来自外部系统(即数据库),您可能还需要重新编号那里的状态。
-
把它作为一个回复,这样我就可以检查它作为一个答案。神一样的,伙计。我刚刚意识到状态应该被多次列出,所以 a | a 需要导致 aa 不仅仅是 a 但没关系。它仍然是上帝般的完成。
标签: c# asp.net-mvc linq razor aggregate