LINQ无法识别select子句中的联接表
本文关键字:子句 识别 select LINQ | 更新日期: 2023-09-27 18:26:24
我将期望的记录连接到返回集,并尝试来确定期望的列是否正确更新。要更新的列由预期行中的字符串确定。
问题:我有一个无法理解的编译错误。
无法解析符号dbRow
(在QtyUpdated字段中,粗体/方括号内有**)。
var x = from addRow in expected.AsEnumerable()
join dbRow in dtDB.AsEnumerable()
on
new { key1= addRow[0], key2=addRow[1] ,key3=addRow[3] }
equals
new { key1=dbRow["TransactionID"],
key2=dbRow["TransactionItemID"],
key3=dbRow["DeliverDate"]
}
into result
from r in result.DefaultIfEmpty()
select new {TID = addRow[0], ItemID = addRow[1], DeliveryDate= addRow[3],
QtyUpdated= (
addRow[6].ToString() == "Estimated" ? **dbRow**["EstimatedQuantity"] == (decimal)addRow[5] :
addRow[6].ToString() == "Scheduled" ? **dbRow**["ScheduledQuantity"]==(decimal)addRow[5] :
addRow[6].ToString() == "Actual" ? **dbRow**["ActualQuantity"]== (decimal)addRow[5] : false)
};
我知道这看起来不稳定,这是一个用于Q/a测试API中的Add函数是否有效的工具。
是的,dbRow
仅在联接的equals
部分内的范围内。但是,您没有使用r
范围变量,该变量包含当前addRow
的匹配行。。。或CCD_ 5。
只需将select
中的每个dbRow
更改为r
即可。但是,当没有任何匹配的行,因此r
为空时,请计算出您希望发生什么。