1

単一の値のリストを持っているときに機能する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 リストにあるキーに一致させようとしていることがわかります。

4

1 に答える 1

1

この行を変更するだけです

where excelViolations.Any(vioId => vio.Key.Formatted.Equals(vioId))

where excelViolations.Any(excelVio => vio.Key.Formatted.Equals(excelVio.VioID))

それから私はそれがうまくいくと思った

于 2013-05-10T06:02:49.287 に答える