C# Linq从列表中匹配属性的数据库表中选择

C# Linq从列表中匹配属性的数据库表中选择,c#,.net,linq,C#,.net,Linq,我有一个列表,上面有下面这堂课的记录 public class TestRecord { public int RecordsId{get;set;} public string Name{get;set;} -- and more such properties. } 现在我有了从linq访问的数据库表,它包含RecordId列,这些值将匹配上面列表中的RecordId值 var result=from p in _context.Details 然而,我认为我

我有一个列表,上面有下面这堂课的记录

  public class TestRecord
  {
     public int RecordsId{get;set;}
public string Name{get;set;}
-- and more such properties.

  }
现在我有了从linq访问的数据库表,它包含RecordId列,这些值将匹配上面列表中的RecordId值

  var result=from p in _context.Details
然而,我认为我可以在这个linq查询上执行where/contains,并为它提供一个子句来匹配列表中的RecordId

 List<TestRecord> records -- this has let's say 100 records.
使用Linq的任何解决方案?

您可以像

var finalresult = context.details.Where(d => records.Contains(d.recordId));

您可以像这样使用任何:

var finalresult = context.details.Where(d => records.Any(r=>r.recordId == d.recordId));

我在vb.net中得到了一个解决方案。我想你翻译不会有问题的

我的班级测试记录:

Public Class TestRecord
Private _RecordsID As Integer
Private _Name As String
Public Property RecordsID As Integer
    Get
        Return _RecordsID
    End Get
    Set(value As Integer)
        _RecordsID = value
    End Set

End Property
Public Property Name As String
    Get
        Return _Name
    End Get
    Set(value As String)
        _Name = value
    End Set

End Property
末级

然后,您的主Sub(或其他任何内容)

我在开始时有一个小循环来创建一些datarows和datatable。我猜您在“context”=>context.details示例中使用了datatable(或Dataset)

在linq查询中,您可以在datatable中设置字段,而通用列表(TestRecord)将从其自身提供所需的列(a.RecordID)


Sry代表我的蹩脚英语x)

\u上下文。详细信息
是一个
数据表
?它是数据库中的表您可以在LINQ中使用where子句。此外,要仅获取100条记录,您可以使用“获取”“跳过”。。。如果我没弄错你的问题。提供更多关于where子句记录中的内容的信息记录不仅仅是一个int/string列表。它还有其他特性,这就是为什么这个解决方案不起作用的原因。我需要对records对象中实体的RecordId属性进行筛选。@MandarJogalekar,什么是
\u上下文。详细信息
?为此提供定义在这种情况下,创建一个要筛选的Id列表,recordId=records。选择(r=>r.recordId).tolist(),并对其运行contains查询this@Rahul数据库中的表,由linq查询到entitythnx!使用AsEnumerable可以加入通用列表。嗨,Mandar,很高兴听到这个消息。请注意字段定义。我犯了一个错误。在Join语句中(在p.field(字符串的)上,请在此处使用整数,因为您将ID定义为整数)。
var finalresult = context.details.Where(d => records.Any(r=>r.recordId == d.recordId));
Public Class TestRecord
Private _RecordsID As Integer
Private _Name As String
Public Property RecordsID As Integer
    Get
        Return _RecordsID
    End Get
    Set(value As Integer)
        _RecordsID = value
    End Set

End Property
Public Property Name As String
    Get
        Return _Name
    End Get
    Set(value As String)
        _Name = value
    End Set

End Property
   Dim records As New List(Of TestRecord)
    Dim context As New DataTable()
    context.Columns.Add("DataTableRecordID")
    context.Columns.Add("Name")
    For i As Integer = 0 To 100
        records.Add(New TestRecord With {
            .RecordsID = i,
            .Name = "TestUser" & i.ToString()})


        context.Rows.Add(i, "TestUser" & i.ToString())
    Next


    Dim FinalResult = From p In context.AsEnumerable()
                      Join a In records.AsEnumerable() On p.Field(Of String)("DataTableRecordID") Equals a.RecordsID