我想知道是否可以根据特定条件将记录添加到一组项目中?
我有这个:
var gear = db.Gears.Where(g => g.Name.StartsWith(term))
.Take(10)
.Select(g => new { label = g.Name });
现在,如果g.Name和term之间没有完全匹配,我想添加带标签的项目
"Add " + term
到集合。这是一个jQuery UI自动完成框。因此,如果没有完全匹配,我们的想法是提出“添加项目”建议。
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
为什么不:
if (!gear.Any(g => g.Name.Equals(item))
gear = gear.Concat(new[] { new { label = "Add " + item } });
虽然您可能需要在原始查询的末尾添加AsEnumerable()
来电,以确保gear
的类型推断为IEnumerable<T>
,而不是IQueryable<T>
答案 1 :(得分:0)
我相信这应该是诀窍:
var gear = db.Gears.Where(g => g.Name.StartsWith(term))
.Select(g => new {label = g.Name != term ? "Add " + term : g.Name})
.Take(10);
您可以考虑将最后一部分重构为一个单独的函数:
private string GetLabel(Gear gear, string term)
{
return gear.Name != term ? "Add " + term : gear.Name;
}