Linq从整数列表中选择多个ID(主键)

时间:2010-12-07 00:59:22

标签: .net linq-to-sql lambda

我有一个整数列表

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

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

我通过循环浏览Lucene Read的结果来添加到该列表中。

''#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(lambda)表达式会是什么样的?

''# 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 个答案:

答案 0 :(得分:2)

EventService.QueryEvents().Where(e => list.Contains(e.ID));

这将在(1,5,...)

中生成SELECT ... WHERE e.ID的等价物

答案 1 :(得分:1)

我在这里猜测,但这似乎是你所追求的。

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

在C#中:

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