我有一个 linq 查询,它在我有一个单一值的列表时可以工作,现在我更改为拥有一个具有多个属性的列表,我需要更改 where 子句
所以这有效:
List<string> etchList = new List<string>();
etchList.Add("24");
var etchVect = (from vio in AddPlas
where etchList.Any(v => vio.Key.Formatted.Equals(v))
let firstOrDefault = vio.Shapes.FirstOrDefault()
where firstOrDefault != null
select new
{
EtchVectors = firstOrDefault.Formatted
}).ToList();
但是我有一个新的硬编码列表(它将代表传入的数据:
List<ExcelViolations> excelViolations = new List<ExcelViolations>();
excelViolations.Add(new ExcelViolations
{
VioID = 24,
RuleType = "SPACING",
VioType = "Line-Line",
XCoordinate = 6132,
YCoordinate = 10031.46
});
所以新的 Linq 查询看起来像这样,但显然不会工作,因为 AddPlas 是一个列表,所以使用这个其他的 excelviolations 列表,我希望让它在 excelviolations 列表中的每个属性上执行
var etchVect = (from vio in AddPlas
where excelViolations.Any(vioId => vio.Key.Formatted.Equals(vioId))
let firstOrDefault = vio.Shapes.FirstOrDefault()
select new
{
EtchVectors = firstOrDefault.Formatted
}).ToList();
现在,由于这是列表中的列表,我想做一些类似添加每个属性的操作,例如:
where excelViolations.VioID.Any(vioId => vio.Key.Formatted.Equals(vioId))
但是这是不可能的,但是您会看到我正在尝试访问 excelViolations 中 VioID 的属性并将其与 vio 列表中的 Key 匹配