gpt4 book ai didi

LINQ 加入顶部 1

转载 作者:行者123 更新时间:2023-12-04 20:23:14 27 4
gpt4 key购买 nike

我有三个对象(splistitemcollection),我将它们连接在一起,这很好用,但我遇到的问题是契约(Contract)对象和客户对象之间存在一对多的关系。在加入期间,我只需要获取每个契约(Contract)对象的第一个客户对象。

这是我得到的

(Contract)(Customer)12345  John Smith12345  Jane Smith67890  howard Jones67890  Mary Jones

Here is what I want12345 (just one of the customers, jane or john)

Here is the code im currently using.

  var joinedResults = from SPListItem contracts in _contractList
join SPListItem customers in _customerList
on contracts["ContractNumber"] equals customers["ContractNumber"]
join SPListItem loans in _loanList
on contracts["ContractNumber"] equals loans["Contract_x0020_Number"]
into l from loans in l.DefaultIfEmpty()
select new MergedData(contracts, customers, loans);

在 SQL 中,我会在我的 join 上定义的子查询中定义一个 select top 子句,我只是无法围绕我的新手 linq 大脑的语法。

最后结果
  var joinedResults = from SPListItem contracts in _contractList
join SPListItem customers in
// Derived subset
(from SPListItem customers in _customerList
group customers by customers["ContractNumber"] into groupedCustomers
select groupedCustomers.FirstOrDefault()
) on contracts["ContractNumber"] equals customers["ContractNumber"]
join SPListItem loans in _loanList
on contracts["ContractNumber"] equals loans["Contract_x0020_Number"] into l
from loans in l.DefaultIfEmpty()
select new MergedData(contracts, customers, loans);

最佳答案

我先解释一下,因为 LINQ 有时看起来很困惑。这个想法是让您的客户查询,并按 ContractNumber 分组,然后取第一个。如果您希望您可以按某个字段排序,使其更具确定性(总是按字母顺序取最低的名称等)然后您只需加入您的 tempQuery这将基本上是 distinct(ContractNumber) 和第一个客户。

var tempQuery =  from SPListItem customers in _customerList
group customers by customers["ContractNumber"] into gby
select gby.First();


var joinedResults =

from SPListItem contracts in _contractList
join SPListItem customer in tempQuery
on contract["ContractNumber"] equals customer["ContractNumber"]
join SPListItem loans in _loanList
on contracts["ContractNumber"] equals loans["Contract_x0020_Number"]
into l from loans in l.DefaultIfEmpty()
select new MergedData(
contracts,
customer,
loans
);

}

关于LINQ 加入顶部 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014855/

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