C# 我能在名单上找到工会3吗

C# 我能在名单上找到工会3吗,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有三个独立的ToSelectList项,我想将每个列表合并到一个下拉列表框中,我想知道是否可以使用一个Union。或者说一个联合体只允许2个选择列表项 谢谢 您可以尝试使用linq扩展方法 var finalSelectList = model.getFirstList().ToSelectList().Union( model.getSecondList().ToSelectList().Union( model.getThir

我有三个独立的ToSelectList项,我想将每个列表合并到一个下拉列表框中,我想知道是否可以使用一个Union。或者说一个联合体只允许2个选择列表项

谢谢

您可以尝试使用linq扩展方法

var finalSelectList = model.getFirstList().ToSelectList().Union(
                model.getSecondList().ToSelectList().Union(
                model.getThirdList().ToSelectList()))

使用
union()
,一次只能合并两个列表-但您可以将其链接以实现所需:

var resultList = list1.Union(list2).Union(list3).ToList();

当项目存在于多个列表中时,您希望项目出现一次,还是与它们在所有列表中出现的次数相同

据我所知,您只需要concat:

var combinedList = list1.Concat(list2).Concat(list3).ToList();
如果要避免重复,请执行以下操作:

var unionList = list1.Union(list2).Union(list3).ToList();
工会的费用更高,因为它必须仔细检查名单并处理重复的工作。
如果您的项目是引用类型,并且没有IComparable或IEquable接口,并且您没有提供IEqualityComparer,那么您可能不需要Union。

谢谢!这就解决了问题。在这种情况下,Concat的效率要高得多。为什么联盟是答案?:)我猜是因为在我的脑海中,union第一次出现在我的脑海中,但经过讨论,我意识到concat的使用听起来更直接。谢谢你的解释,至于我在做什么,我的列表将不会有任何重复,因为我在应用程序的不同部分处理它。但是,如果我想添加列表,并且在每个列表之后,有没有一种方法可以添加一个空行,这样我就可以知道列表的开始和结束时间。@Amina-似乎我的详细回答没有得到赞赏。实际上,我非常感激:)并且学到了两个新的事实说实话,我想我对结果过于兴奋了,因为我没有像以前那样表达我的感激之情阿米娜-好的。下面是添加空行的建议。我不知道列表中元素的类型,所以我假设是simple
string
。您可以添加一行,如
list1。在连接之前,将(“------------”)添加到每个列表中。当用户从下拉列表中选择此“分隔符”项时,您需要确保正确处理它。以下是我的列表:IQueryable stores=\u storeRepository.FindalActiveForUser(\u currentUser.Name).OrderBy(o=>o.StoreName);var storeList=stores.ToSelectList(“StoreId”、“StoreName”、viewModel.StoreId.ToString());然后,我把它用于另外两个列表,然后我把它们合并成一个列表