gpt4 book ai didi

c# - 使用 LINQ 从两个不同的列表创建对,其中条目具有相同的属性

转载 作者:太空狗 更新时间:2023-10-30 00:52:18 26 4
gpt4 key购买 nike

我有两个继承自抽象 AbstractLineModel 类的 RequestsResponses 列表。响应和请求都包含一个名为 RequestId 的 ID(或不包含)。

CallPair 包含一对匹配的 Request 和一个 Response 并具有以下构造函数:

public AbstractLineModel _request { get; set; }
public AbstractLineModel _response { get; set; }

public CallPair(AbstractLineModel request, AbstractLineModel response)
{
_request = request;
_response = response;
}

我想制作一个 CallPairsList,其中 RequestResponse 具有相同的 Id在 Callpair 中匹配。如何匹配RequestsResponses列表?

我尝试的是:

public void MatchCallPairs()
{
// Finds request that have matching response
var requestWithMatches = _requests
.Where(req => _responses.All(res => res.RequestId == req.RequestId)).ToList();

// Match the request to the response
foreach (var req in requestWithMatches)
{
var resp = _responses.Where(res => res.RequestId == req.RequestId).FirstOrDefault();

// And create the pairs
_callPairs.Add(new CallPair(req, resp));
}
}

但这会返回一个空列表。

具体来说,var requestWithMatches = _requests
.Where(req => _responses.All(res => res.RequestId == req.RequestId)).ToList();
返回 requestsWithMatches 的空列表。

有人可以帮我解决这个算法吗?

最佳答案

只需在 RequestId 上连接两个序列并从连接的项目创建 CallPair:

 var requestWithMatches = from req in _requests
join resp in _responses
on req.RequestId equals resp.RequestId
select new CallPair(req, resp);

关于c# - 使用 LINQ 从两个不同的列表创建对,其中条目具有相同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22045577/

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