LINQ содержит синтаксис со списком <string> - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть список идентификаторов, размещенных с сообщением HTTP на странице * .aspx.На сервере я пытаюсь сравнить этот список со списком объектов, чтобы увидеть, для каких объектов их поле PrimaryKey ID отсутствует в опубликованных идентификаторах (или удаляет) и идентификаторах из списка, у которых нет соответствующих объектов (добавлений).Вот мой LINQ для получения удалений:

List<string> ids = new List<string>(txtParticipants.Value.Split(','));
List<NetworkEvent> deletes = e.NetworkEvent.Where(c =>
      !ids.Contains(c.NetworkID.ToString())).ToList<NetworkEvent>();

Этот запрос на удаление работает нормально.Моя проблема заключается в создании обратного, добавляет.Вот моя попытка (с которой мне нужна помощь).Вопрос в том, как ссылаться на строку из списка в предикате Contains ()?Очевидно, что само по себе неправильно, но как я могу сослаться на это?

List<string> adds = newids.Where( c=> (e.NetworkEvent.Select
    (z=> z.NetworkID ).Contains( int.Parse(c) ));

Надеюсь, мой вопрос имеет смысл (?!).спасибо.

Ответы [ 3 ]

1 голос
/ 02 апреля 2011

Попробуйте:

var itemsAlreadyAdded = new int[] { 2, 4, 6 };
var newIds = new string[] { "2", "3" };

var itemsToAdd = newIds.Except(itemsAlreadyAdded.Select(iaa => iaa.ToString()));

foreach (var item in itemsToAdd)
{
    Console.WriteLine(item);
}

Console.ReadLine();
0 голосов
/ 02 апреля 2011

Для удалений вы можете использовать "! Contains", как вы только что сделали.

Для дополнений просто используйте то же выражение , но в обратном порядке (то есть в обратном порядке два списка).

Другими словами: список № 1! Содержит вещи в списке № 2 ==>

  • элемент в списке № 2 удален из списка № 1 или
  • элемент в списке # 2 для вставки в список # 1

Итак, вы видите, что одно и то же выражение имеет зеркальные значения.

Вы также можете использовать! Существует или! Любое место! Содержит.

0 голосов
/ 02 апреля 2011

Вы можете попробовать:

List<string> adds = newids.Where(id => !e.NetworkEvent.Any(e => e.NetworkID.ToString() == id)).ToList();
...