2011-08-20 58 views
0

我wonderow是否有可能基於特定條件添加記錄到一組項目?添加單個項目在ASP.NET MVC3中設置

我有這樣的:

var gear = db.Gears.Where(g => g.Name.StartsWith(term)) 
      .Take(10) 
      .Select(g => new { label = g.Name }); 

現在,如果沒有g.Name與詞之間的精確匹配我想與標籤

"Add " + term 

設定的添加項目。這是一個jQuery UI自動完成框。因此,如果沒有完全匹配,這個想法是提出一個「添加項目」的建議。

有關如何做到這一點的任何想法?

回答

1

爲什麼不:

if (!gear.Any(g => g.Name.Equals(item)) 
    gear = gear.Concat(new[] { new { label = "Add " + item } }); 

雖然,你可能需要在你的原始查詢的末尾添加AsEnumerable()呼籲確保gear的類型推斷爲IEnumerable<T>,不IQueryable<T>

+0

恩,謝謝你的例子。但是,如果該集合不包含**精確**匹配,則該集合需要添加「添加項目」值。該集合不一定是空的(請注意查詢中的「StartsWith()」)。 我不知道如何將項目添加到現有設置... –

+0

@David_N查看更新 –

+0

工程非常好。除了缺少parentesis並且「g.Name」應該是g.label。 (我改變了你的答案) 謝謝! –

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; 
} 
相關問題