gpt4 book ai didi

c# - 在多种条件下比较列表

转载 作者:行者123 更新时间:2023-11-30 19:26:27 24 4
gpt4 key购买 nike

public class ConsumableThreshold
{
public int ThresholdType { get; set; }
public int ManufacturerID { get; set; }
public int ModelID { get; set; }
public int ConsumableVariantID { get; set; }
}

我正在尝试检查两个对象列表的共享属性。我将需要根据之前比赛的结果检查各种其他属性。

例如,如果 ThresholdType 匹配,则我需要检查第二个属性,如果匹配,我需要检查 ModelID。

我有这个查询,它可以有效地做我想做的事情,但它存在问题,主要是我越往下钻,可读性就越低。

var query= existingThresholds.Where(
e => defaultThresholds.Any(
d => d.ThresholdType == e.ThresholdType)).Where(
e => defaultThresholds.Any(
d => d.ManufacturerID == e.ManufacturerID)).ToList();

我想使用 join 来做到这一点,但它不支持 && 运算符。

var query2 = from e in existingThresholds
join d in defaultThresholdson
e.ThresholdType equals d.ThresholdType &&
e.ManufacturerID equals d.ManufacturerID
select e;

有没有一种方法可以将其编写为查询而不用链接 .Where() 条件?

最佳答案

当然 - 你只是想加入一个复合键,这通常是用匿名类型完成的:

var query2 = from e in existingThresholds
join d in defaultThresholdson
on new { e.ThresholdType, e.ManufacturerID } equals
new { d.ThresholdType, d.ManufacturerID }
select e;

(后来忽略连接的一半有点奇怪,无可否认...)

关于c# - 在多种条件下比较列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22843198/

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