有关如何使用Linq执行以下代码的任何线索?
for (Int32 i = 0; i < array1.Count; ++i)
{
if (!array1[i].Name.Equals(array2[i].Name, StringComparison.OrdinalIgnoreCase))
return false;
}
答案 0 :(得分:3)
可能值得仔细检查以确保array1
和array2
至少与bones一样长。计数......所以
Enumerable
.Range(0, new[] {bones.Count, array1.Length, array2.Length}.Min())
.All(i => array1[i].Name.Equals(array2[i].Name, StringComparison.OrdinalIgnoreCase))
答案 1 :(得分:0)
array1.All((a, i) => a.Name.Equals(array2[i].Name, StringComparer.OrdinalIgnoreCase);
答案 2 :(得分:0)
如果您想知道数组中的所有名称是否相同,您可以使用相同的索引:
bool allEqualNamesAtSamePosition = array1
.Zip(array2, (arr1, arr2) => new { arr1, arr2 })
.All(x => string.Equals(x.arr1.Name, x.arr2.Name, StringComparison.OrdinalIgnoreCase));
但通常我更喜欢普通的for
- 循环,如果某些东西取决于索引。在我看来,LINQ甚至会降低可读性。