比较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);
好吧,我就是这么做的。这可能会优化很多次:
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);
}
}