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