Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET MVC3中将单个项添加到集合_Asp.net_Linq_Asp.net Mvc 3_Linq To Entities - Fatal编程技术网

在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。(你的回答我改了)谢谢!