gpt4 book ai didi

.net - 使用 LINQ 比较和检查集合

转载 作者:行者123 更新时间:2023-12-02 03:46:58 24 4
gpt4 key购买 nike

我必须比较 2 个集合并检查 TransactionLevelCommentsCollection 中的 transactionId 是否存在于 TransactionCommentsCollection 中。如果存在,则抛出 TransactionLinq.Key 的警报。

//代码

      For Each Record In (From TransactionCommentLinq In Me.TransactionCommentsCollection
Join TransactionLinq In Me.TransactionsCollection On TransactionLinq.TransactionId Equals TransactionCommentLinq.TransactionId
Join TaskLinq In Me.WorkflowsController.TasksController.TasksCollection On TaskLinq.TaskId Equals TransactionCommentLinq.TaskId
Select TransactionLinq.Key,TransactionLinq.TransactionId, TaskLinq.TaskId Distinct)

// Have to check the values exists in TransactionLevelCommentsCollection here
Next

记录返回 transactionId,我必须检查 TransactionLevelCommentsCollection

最佳答案

Dim rec = From TransactionCommentLinq In Me.TransactionCommentsCollection
Join TransactionLinq In Me.TransactionsCollection On TransactionLinq.TransactionId Equals TransactionCommentLinq.TransactionId
Join TaskLinq In Me.WorkflowsController.TasksController.TasksCollection On TaskLinq.TaskId Equals TransactionCommentLinq.TaskId
Select TransactionLinq.Key,TransactionLinq.TransactionId, TaskLinq.TaskId Distinct

因为您只想比较 TransactionId 的值:

Dim transIds = rec.Select(Function(r) r.TransactionId)

现在您从上面的长 linq 中获得了 TransactionId 的列表。我们假设值类型与您的 TransactionLevelCommentsCollectionTransactionId

相同

使用相交:

Dim idExist = transIds.Intersect(TransactionLevelCommentsCollection.Select(Function(x) x.TransactionId)

现在 idExist 将包含两个集合中都存在的 ID 列表。

根据新要求更新

由于 OP 需要 Key 而不是 TransactionID,因此有 3 种方法可以获取 Key

方法一:继续上面显示的方法,使用以下方法获取项目的 Key 值:

For Each id In idExist 
rec.First(Function(o) o.TransactionId = id).Key
Next

方法二:下面的代码是完全重写的(与上面显示的方法无关),它将从上面的 LINQ 返回 rec 对象,该对象具有存在于 TransactionLevelCommentsCollection 中的 TransactionID :

Dim xrec = rec.Where(Function(o) TransactionLevelCommentsCollection.Exists(Function(tlc) tlc.TransactionId = o.TransactionId))

好吧,实际上这段代码将循环每个 TransactionLevelCommentsCollection 项目,检查每个 rec 中匹配 TransactionIdTransactionId项目。不同之处在于它是在 1 行代码中完成的。

方法三:这也是一个完全重写的代码,使用连接查询:

Dim xrec = From r In rec
From tlc In TransactionLevelCommentsCollection
Where r.TransactionId = tlc.TransactionId
Select r.TransactionId, r.Key

现在 xrec 包含来自 rec 的项目列表,每个对应的 TransactionIDKey 属性存在于其 TransactionIDTransactionLevelCommentsCollection 中。

关于.net - 使用 LINQ 比较和检查集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com