来自数据库 table 的 Linq select,其中匹配来自列表的 属性

Linq select from database table where matching property from List

我有一个列表,其中包含以下 class 的记录,就像这样

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

  }

现在我有数据库 table,我可以从 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 = from p in context.details
                      join a in records on p.recordId equals a.recordId

有任何使用 Linq 的解决方案吗?

你可以Contains()喜欢

var finalresult = context.details.Where(d => records.Contains(d.recordId));
 var s = from p in tests where names.Contains(p.Name) select p;

您可以这样使用 Any

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

我在 vb.net 中找到了解决方案。我想你翻译应该没问题吧

我的Class测试记录:

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

结束Class

然后,你的主要 Sub(或其他)

   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

一开始我有一个小循环来创建一些数据行和一个数据表。我猜你在 "context" => context.details 示例中使用了数据表(或数据集)。

在 linq 查询中,您可以在数据表中设置您的字段,通用列表 (TestRecord) 会自动为您提供所需的列 (a.RecordID)。

抱歉我的英语不好 x)