Linq выбирает несколько идентификаторов (первичных ключей) из целочисленного списка - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть список целых чисел

''# VB
Dim ResultIDsas List(Of Integer) = new List(Of Integer)

// C#
List<int> ResultIDs= new List<int>(); 

Я добавляю в этот список, просматривая результаты чтения Lucene.

''#VB
While (i <= (page * 10) AndAlso i < HitCollection.Length)
    Dim document As Document = HitCollection.Doc(i)
    Dim _event As New Domain.[Event]

    ResultIDs.Add(document.[Get]("ID"))
    i += 1
End While

// C#
while ((i <= (page * 10) && i < HitCollection.Length)) {
    Document document = HitCollection.Doc(i);
    Domain.Event _event = new Domain.Event();

    ResultIDs.Add(document.Get("ID"));
    i += 1;
}

Теперь вот вопрос.

Скажите, что мой список целых чисел [1,5,6,19,22]

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

''# VB
EventService.QueryEvents().Where(Function(e) (e.ID = 1))

// C#
EventService.QueryEvents().Where((System.Object e) => (e.ID == 1));

// Obviously these will simply grab ID of "1" which is not what we want.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010
EventService.QueryEvents().Where(e => list.Contains(e.ID));

это сгенерирует эквивалент SELECT ... WHERE e.ID в (1,5, ...)

1 голос
/ 07 декабря 2010

Я предполагаю здесь, но это, кажется, то, что вы ищете.

''# VB.NET
EventService.QueryEvents().Where(Function(e) (ResultIDs.Contains(e.ID))

И в C #:

// C#
EventService.QueryEvents().Where((System.Object e) => (ResultIDs.Contains(e.ID)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...