比较n个列表,并返回c#中的匹配对象

本文关键字:对象 返回 列表 比较 | 更新日期: 2023-09-27 18:23:34

我正在尝试实现一种搜索方法,在这里我可以搜索,例如:"Fish,Ball,Horse"。我只想得到ALL匹配的结果。

我这样搜索:

string[] splitted = searchText.Split (',');
for (int i = 0; i < splitted.Length; i++) 
{
    splitted [i] = splitted [i].Trim ();
}
List<List<Card>> allMatches = new List<List<Card>> ();
foreach (string search in splitted) 
{
    if (search.Length == 0)
        continue;
    allMatches.Add( DataBase.SearchCards (search));
}

现在,如何使用列表中所有数组中的Cards对象获得一个新列表:List<List<Card>> allMatches

我的实现正在工作,我只需要帮助实现这个伪代码方法:

ListOfAllCardsInLists(List<List<Card>> listOfCardLists)
{
    //Code here...
}

所以我可以这样使用它:

List<Card> cardsThatAreInAllLists = ListOfAllCardsInLists(allMatches);

比较n个列表,并返回c#中的匹配对象

好吧,我就是这么做的。这可能会优化很多次:

        List<Card> results = new List<Card>(allMatches.FirstOrDefault ());
        for (int i = 1; i < allMatches.Count (); i++) {
            List<Card> other = allMatches [i];
            List<Card> toRemove = new List<Card> ();
            foreach(Card e in results) {
            //This comparison can be interpreted as other.Contains(e)
                if (other.Any(b => b.ID == e.ID)) {
                    continue;
                }
                toRemove.Add (e);
            }
            foreach (Card e in toRemove) {
                results.Remove (e);
            }
        }