【发布时间】:2015-02-21 20:01:03
【问题描述】:
我想比较多个列表(最多 10 个)并输出一个比较表,显示列表中存在哪些项目。
假设我有 3 个列表
A{ item1, item2, item3}
B{ item2}
C{ item4, item 1 }
我想要一个表格,将 A、B、C 中的所有不同项目显示为行 列表名称作为列 在网格内,我想要一个真/假,显示该项目是否存在于该列的列表中。
有没有简单的方法在 html 或 c# 中做到这一点? (我使用.net mvc) 非常感谢!
编辑:抱歉含糊其辞。我仍在考虑最好的方法。 我现在拥有的: 包含不同列表列表的模型
public class CompareModel
{
public List<Tree> trees{ get; set; }
public string someotherinfo1 { get; set; }
public string someotherinfo2{ get; set; }
}
public class Tree
{
public List<item> items{ get; set; }
public int treeid{ get; set; }
public string treename{ get; set; }
}
public class Item
{
public int itemid{ get; set; }
public string itemname{ get; set; }
}
所以现在我有一个“比较”模型传递给视图,比如 3 树,每个都包含一些项目。
我想问的是如何编写模型的视图,比较哪些项目存在于哪个树中,哪些项目不存在于哪个列表中,使用真假表。
在 html 中是这样的:
| A | B | C |
item1 | T | F | T |
item2 | T | T | F |
item3 | T | F | F |
item4 | F | F | T |
提到的列是树的项目的联合。网格内的真/假怎么样?现在我正在考虑一种直接的方法:
foreach (Tree t in trees){
foreach (Item i in UnionedItemList){
result = t.items.Contains(i);
//Display result
}
}
有更好的方法吗?因为在实际情况下,我希望每棵树有 90 个项目。如果一切都不同,我将不得不运行 .Contains() 270 次。有更快的方法吗?非常感谢!
【问题讨论】:
-
您的具体问题是什么?您的表格中的某些数据不正确?请出示您的代码并说明预期内容和您现在拥有的内容
-
是的,有一种简单的方法可以在 C# 中完成(当然你也可以在 HTML 中输出)。如果您发布您的代码(请参阅help center)并且您解释了哪个部分不起作用,我们可能会尝试帮助您修复它。
-
到目前为止,您尝试了什么?另外,您从哪里获取这些数据?
-
列表是什么格式的?你有单独的列表变量,列表列表吗?如果要获取多个列表中的所有不同项目,可以使用 LINQ (C#) 中的
Union函数(它需要 2 个集合或列表,并告诉您所有列表中的不同值集) -
抱歉,我的问题不是很具体。请再次参考问题。谢谢您的帮助! @mirhagk 感谢
Union函数的帮助!这真的很有帮助!