添加单个项目以在ASP.NET MVC3中设置

时间:2011-08-20 14:37:46

标签: 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自动完成框。因此,如果没有完全匹配,我们的想法是提出“添加项目”建议。

关于如何做到这一点的任何想法?

2 个答案:

答案 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;
}