[英]Linq query change from List<string> to List<T> where clause
我有一個linq查詢,當它有一個單一值的列表時,它可以工作,現在我更改為具有多個屬性的List,我需要更改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是一個列表,因此使用其他excelviolation列表,我希望它在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();
現在,由於這是一個列表中的列表,因此我想在每個屬性中執行類似add的操作,例如:
where excelViolations.VioID.Any(vioId => vio.Key.Formatted.Equals(vioId))
但是,這是不可能的,但是您看到我正在嘗試訪問excelViolations中的VioID的屬性,並將其與vio列表中的Key匹配。
只需更改此行
where excelViolations.Any(vioId => vio.Key.Formatted.Equals(vioId))
至
where excelViolations.Any(excelVio => vio.Key.Formatted.Equals(excelVio.VioID))
那我以為會有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.