在ASP.NET MVC3中将单个项添加到集合
我想知道是否有可能根据特定条件向一组项目添加记录 我有这个:在ASP.NET MVC3中将单个项添加到集合,asp.net,linq,asp.net-mvc-3,linq-to-entities,Asp.net,Linq,Asp.net Mvc 3,Linq To Entities,我想知道是否有可能根据特定条件向一组项目添加记录 我有这个: 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自动完成框。因此,如果没有确切
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自动完成框。因此,如果没有确切的匹配项,则可以提出“添加项”建议
有什么办法吗?为什么不:
if (!gear.Any(g => g.Name.Equals(item))
gear = gear.Concat(new[] { new { label = "Add " + item } });
尽管如此,您可能需要在原始查询的末尾添加一个
AsEnumerable()
调用,以确保gear
的类型推断为IEnumerable
,而不是IQueryable
,我相信这应该是关键:
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;
}
嗯,谢谢你的例子。但是,如果集合不完全匹配,则集合需要添加“add item”值。集合不一定为空(请注意查询中的“StartsWith()”)。我不确定如何将项目添加到现有集合中…效果非常好。除了缺少parentesis,而且“g.Name”应该是g.label。(你的回答我改了)谢谢!