LINQ相当于以下代码?

时间:2011-05-20 03:22:45

标签: c# linq

我正在学习LINQ并想要一些帮助以下方法。如何重写以下方法以使用LINQ?

private bool IsInList(string file, List<FileInfo> excelList)
{
    if (excelList != null && excelList.Count > 0)
    {
        foreach (FileInfo f in excelList)
        {
            if (string.Compare(f.FullName, file, StringComparison.OrdinalIgnoreCase) == 0)
            {
                return true;
            }
        }
    }

    return false;
}

5 个答案:

答案 0 :(得分:7)

我会更改第二个参数以接受IEnumerable<FileInfo>,这样您就不会仅限于列表。

private bool IsInList(string file, IEnumerable<FileInfo> excelList)
{
    return excelList != null && excelList.Any(f => f.FullName.Equals(file, StringComparison.OrdinalIgnoreCase));
}

答案 1 :(得分:3)

使用lambdas:

private bool IsInList(string file, List<FileInfo> excelList)
{
    return excelList != null && excelList.Any(f => string.Compare(f.FullName, file, StringComparison.OrdinalIgnoreCase) == 0);
}

答案 2 :(得分:1)

这样的事情:

private bool IsInList(string file, List<FileInfo> excelList)
{
    if (excelList == null) return false;
    return excelList.Any(f => string.Compare(f.FullName, file, StringComparison.OrdinalIgnoreCase) == 0));
}

答案 3 :(得分:0)

尝试一下 - 完全未经测试。

private bool IsInList(string file, List<FileInfo> excelList)
{
    if (excelList != null && excelList.Count > 0)
    {
        return excelList.Any(f => string.Compare(f.FullName, file, StringComparison.OrdinalIgnoreCase) == 0);
    }

    return false;
}

答案 4 :(得分:0)

这应该......

if (excelList != null && excelList.Count > 0)
{
    return (from f in excelList
            where (string.Compare(f.FullName, file, StringComparison.OrdinalIgnoreCase) == 0)
            select f).Any();
}
return false;