考虑以下计划
private static bool CheckFactorPresent(List<FactorReturn> factorReturnCol)
{
bool IsPresent = true;
StringBuilder sb = new StringBuilder();
//Get the exposure names from Exposure list.
//Since this will remain same , so it has been done outside the loop
List<string> lstExposureName = (from item in Exposures
select item.ExposureName).ToList<string>();
foreach (FactorReturn fr in factorReturnCol)
{
//Build the factor names from the ReturnCollection dictionary
List<string> lstFactorNames = fr.ReturnCollection.Keys.ToList<string>();
//Check if all the Factor Names are present in ExposureName list
List<string> result = lstFactorNames.Except(lstExposureName).ToList();
if (result.Count() > 0)
{
result.ForEach(i =>
{
IsPresent = false;
sb.AppendLine("Factor" + i + "is not present for week no: " + fr.WeekNo.ToString());
});
}
}
return IsPresent;
}
基本上我正在检查
中是否存在所有 FactorNames [lstFactorNames] 使用lstFactorNames.Except(lstExposureName).
ExposureNames [lstExposureName]列表
然后使用 Count()函数(如果count()&gt; 0),我正在编写错误
消息到 String Builder(sb)
我确信有人可以写出比提出的更好的实现。
我期待着从该计划中学到新的东西。
我正在使用c#3.0和dotnet framework 3.5
由于
答案 0 :(得分:0)
除了一些命名约定问题,我认为看起来很好(因为我可以在没有看到其余代码的情况下弄清楚,或者努力的目的。虽然命名约定需要一些工作。一个零星的ntnHungarian,PascalCase,camelCase和abbrv的混合有点迷惑。试着仅仅命名你的本地变量camelCase并且事情看起来好多了。祝你好运 - 到目前为止看起来还不错!
- 编辑 -
此外,您只需运行一个简单的foreach
:
...
foreach (var except in result)
{
isPresent = false;
builder.AppendFormat("Factor{0} is not present for week no: {1}\r\n", except, fr.WeekNo);
}
...