Добавление одного элемента для установки в ASP.NET MVC3 - PullRequest
0 голосов
/ 20 августа 2011

Интересно, можно ли добавить запись в набор предметов на основе определенного условия?

У меня есть это:

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

Теперь, если нет точного соответствия между g.Name и термином, я хочу добавить элемент с меткой

"Add " + term

к набору. Это для окна автозаполнения пользовательского интерфейса jQuery. Поэтому идея состоит в том, чтобы представить предложение «добавить элемент», если нет точного соответствия.

Есть идеи, как это сделать?

Ответы [ 2 ]

1 голос
/ 20 августа 2011

Почему бы и нет:

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

Хотя вам может потребоваться добавить вызов AsEnumerable() в конце исходного запроса, чтобы убедиться, что тип gear выводится как IEnumerable<T>, а не IQueryable<T>

0 голосов
/ 22 августа 2011

Я полагаю, что это должно быть хитростью:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...