下面的程序有什么更好的方法(c#3.0)

时间:2010-06-17 08:09:35

标签: c#-3.0

考虑以下计划

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

由于

1 个答案:

答案 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);
}
...