簡體   English   中英

Linq查詢從列表更改 <string> 列出 <T> where子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM