我正在学习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;
}
答案 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;