将数据从db1复制到db2后,我正在做大量的数据完整性测试。将lambdas传入方法来比较两个列表的成员
我一直在写这几乎是相同的测试,这里是伪代码
Get db1List
Get db2list
for each db2poco in db2list
linq to get list of db1pocos.membervaribale1 matches db2poco.membervaribale1
if db1pocos.membervaribale2 == db2poco.membervaribale2
return false
return true
我想将其转换成需要的compareisons泛型和lambda表达式的通用方法...一些kindof像这,除了它不编译...
private bool GenericCompareLists<T1, T2>(List<T1> cdssList, List<T2> spamisList, object sender, Func<bool, T1, T2> filterLambda , Func<bool, T1, T2> compareLambda)
{
bool passed = true;
foreach (T2 spamisCv in spamisList)
{
List<T1> cdssSubList = (from l in cdssList where filterLambda(l, spamisCv) select l).ToList();// should alwasy be one,
if (cdssSubList.Count != 1)
{
log.Error("...");
passed = false;
}
else
{
T1 cdssCv = cdssSubList.First();
if (compareLambda(cdssCv, spamisCv))// comparing the sum of all check_amt for this type, cdss vs spamis - EWB
{
log.Error("Failed in comparison f" + sender.ToString() );
passed = false;
}
}
}
return passed;
}
但我无法弄清楚如何使它acutally工作/调用它。
请问你能给我一个手吗?或指向我好refernces,将撞了我的拉姆达福...
看起来正确,问题在哪里? – 2013-02-21 23:04:17
“除非它不编译” - 可以添加错误消息吗? – poke 2013-02-21 23:05:19
下面的答案得到了不令人满意,谢谢!我先是布尔而不是最后一个。现在我只需要弄清楚如何编写lambda表达式,并且我很快乐。 – 2013-02-21 23:32:02