我将预期记录连接到返回的集合,尝试以确定预期列是否已正确更新。要更新的列由预期行中的字符串确定。
问题:我有一个编译错误,我不明白。
无法解析符号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函数是否真的有用。
答案 0 :(得分:3)
是的,dbRow
仅在联接的equals
部分范围内。但是,您没有使用r
范围变量 - 其中包含当前addRow
...或null
的匹配行。
只需将dbRow
中的每个select
更改为r
即可。但是当不是任何匹配的行时,请确定您想要发生的事情,因此r
为空。