如何比较列表中的所有项是否相等?

27 浏览
0 Comments

如何比较列表中的所有项是否相等?

我有一个列表,其中每个项目本身都是一个字符串列表。\n如何检查所有单个项目是否相同?\n

static void Main(string[] args)
{
    var myList = new List>();
    var myItem1 = new List { "str1", "str2" };
    var myItem2 = new List { "str1", "str2" };
    myList.Add(myItem1);
    myList.Add(myItem2);
    var total = ??  // <- 我在这里卡住了
    Console.WriteLine(total);
    Console.ReadKey();
}

\n现在我想检查myList中的每个项目是否相等。\n我尝试了这个:Check if two list have the same items,但无法解决。

0
0 Comments

如何比较列表中的所有项目是否相等?

要检查所有列表是否包含完全相同的元素,我们可以使用SequenceEqual方法,该方法比较元素本身及其顺序。然而,由于您说顺序无关紧要,因此在进行比较时,我们必须首先对列表进行排序。

以下代码行在将所有列表(第一个列表除外)简化为不同的项目并排序(OrderBy)后,与将第一个列表(简化为不同的项目并排序)进行比较时,返回true:

bool allAreEqual = myList
    .Skip(1)
    .All(subList => subList
        .Distinct()
        .OrderBy(item => item)
        .SequenceEqual(myList.First().Distinct().OrderBy(item => item)));

相比于一行代码完成所有操作,将获取不同的、排序的列表,然后进行比较会更易于阅读(个人意见)并且性能更好(否则我们将对每个其他列表的第一项进行排序):

var sortedLists = myList.Select(list => list.Distinct().OrderBy(item => item));
var allAreEqual = sortedLists.Skip(1).All(list => list.SequenceEqual(sortedLists.First()));

这样,我们可以先对列表进行处理,然后再进行比较。

0
0 Comments

如何比较列表中的所有项目是否相等?

有时我们需要比较一个列表中的所有项目是否相等。这可能是因为我们想要确定列表中的所有元素是否都具有相同的值,或者我们想要检查列表是否为空。无论出于何种原因,我们需要找到一种方法来解决这个问题。

在这种情况下,我们可以尝试像这样的方法,如果列表的元素都相同,它应该输出true。

对于你的代码:

if (myList.Any(item => !Enumerable.SequenceEqual(item, myList[0])))

这段代码使用了LINQ库中的`Any`和`SequenceEqual`方法。`Any`方法用于确定列表中是否有任何元素满足指定的条件。`SequenceEqual`方法用于比较两个序列是否相等。

在这段代码中,我们使用`Any`方法来检查列表中是否有任何元素与第一个元素不相同。如果有任何一个元素不相同,那么这个条件会返回true,否则返回false。

通过这种方法,我们可以很容易地比较列表中的所有项目是否相等。我们只需要使用`Any`方法和`SequenceEqual`方法来检查是否有任何一个元素与第一个元素不相同。如果列表中的所有元素都相同,那么这个条件将返回false,否则返回true。

这种方法非常简单且有效,可以帮助我们解决比较列表中所有项目是否相等的问题。无论我们是想要检查列表中的所有元素是否具有相同的值,还是想要确定列表是否为空,这种方法都可以很好地满足我们的需求。

0