C# 用C语言将两个列表合并在一起# 公共静态选择列表指示组(int?entityId、int?projectType、int?oldProjectType) { List oldSelectList=新列表(); List newSelectList=新列表(); ISpWeb\u ProjectListResultSet newList=Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb\u ProjectList(entityId,projectType); ISpWeb\u ProjectListResultSet oldList=Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb\u ProjectList(entityId,oldProjectType); foreach(新列表中的SpWeb\u项目列表1LightDataObject项。SpWeb\u项目列表1) { 添加(新建SelectListItem(){Text=item.ProjectName,Value=item.ProjectName.GetHashCode().ToString()}); } foreach(旧列表中的SpWeb\u项目列表1LightDataObject项。SpWeb\u项目列表1) { 添加(新SelectListItem(){Text=item.ProjectName,Value=item.ProjectName.GetHashCode().ToString()}); } //我想返回两个选择列表的并集。。。 //返回新的SelectList(unionedList、“值”、“文本”); } 公共类SelectListItem { public SelectListItem(); 已选择公共布尔值{get;set;} 公共字符串文本{get;set;} 公共字符串值{get;set;} }

C# 用C语言将两个列表合并在一起# 公共静态选择列表指示组(int?entityId、int?projectType、int?oldProjectType) { List oldSelectList=新列表(); List newSelectList=新列表(); ISpWeb\u ProjectListResultSet newList=Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb\u ProjectList(entityId,projectType); ISpWeb\u ProjectListResultSet oldList=Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb\u ProjectList(entityId,oldProjectType); foreach(新列表中的SpWeb\u项目列表1LightDataObject项。SpWeb\u项目列表1) { 添加(新建SelectListItem(){Text=item.ProjectName,Value=item.ProjectName.GetHashCode().ToString()}); } foreach(旧列表中的SpWeb\u项目列表1LightDataObject项。SpWeb\u项目列表1) { 添加(新SelectListItem(){Text=item.ProjectName,Value=item.ProjectName.GetHashCode().ToString()}); } //我想返回两个选择列表的并集。。。 //返回新的SelectList(unionedList、“值”、“文本”); } 公共类SelectListItem { public SelectListItem(); 已选择公共布尔值{get;set;} 公共字符串文本{get;set;} 公共字符串值{get;set;} },c#,.net,linq,union,C#,.net,Linq,Union,如何使SelectListItem类公平 上面的代码应该解释我想在注释中做什么。有人告诉我我可以使用LINQ,但我不知道在LINQ方面我在做什么。谢谢 你是说像这样 public static SelectList IndicationsGroup(int? entityId, int? projectType, int? oldProjectType) { List<SelectListItem> oldSelectList = new Li

如何使SelectListItem类公平

上面的代码应该解释我想在注释中做什么。有人告诉我我可以使用LINQ,但我不知道在LINQ方面我在做什么。谢谢

你是说像这样

public static SelectList IndicationsGroup(int? entityId, int? projectType, int? oldProjectType)
        {
            List<SelectListItem> oldSelectList = new List<SelectListItem>();
            List<SelectListItem> newSelectList = new List<SelectListItem>();

            ISpWeb_ProjectListResultSet newList = Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb_ProjectList(entityId, projectType);
            ISpWeb_ProjectListResultSet oldList = Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb_ProjectList(entityId, oldProjectType);

            foreach (SpWeb_ProjectList1LightDataObject item in newList.SpWeb_ProjectList1)
            {
                newSelectList.Add(new SelectListItem() { Text = item.ProjectName, Value = item.ProjectName.GetHashCode().ToString() });
            }
            foreach (SpWeb_ProjectList1LightDataObject item in oldList.SpWeb_ProjectList1)
            {
                oldSelectList.Add(new SelectListItem() { Text = item.ProjectName, Value = item.ProjectName.GetHashCode().ToString() });
            }

            // I want to return a union of the two select lists...
            // return new SelectList(unionedList, "Value", "Text");

        }

public class SelectListItem
    {
        public SelectListItem();

        public bool Selected { get; set; }
        public string Text { get; set; }
        public string Value { get; set; }
    }
你是说像这样

public static SelectList IndicationsGroup(int? entityId, int? projectType, int? oldProjectType)
        {
            List<SelectListItem> oldSelectList = new List<SelectListItem>();
            List<SelectListItem> newSelectList = new List<SelectListItem>();

            ISpWeb_ProjectListResultSet newList = Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb_ProjectList(entityId, projectType);
            ISpWeb_ProjectListResultSet oldList = Chatham.Web.Proxies.TransactionsDataTier.ExecSpWeb_ProjectList(entityId, oldProjectType);

            foreach (SpWeb_ProjectList1LightDataObject item in newList.SpWeb_ProjectList1)
            {
                newSelectList.Add(new SelectListItem() { Text = item.ProjectName, Value = item.ProjectName.GetHashCode().ToString() });
            }
            foreach (SpWeb_ProjectList1LightDataObject item in oldList.SpWeb_ProjectList1)
            {
                oldSelectList.Add(new SelectListItem() { Text = item.ProjectName, Value = item.ProjectName.GetHashCode().ToString() });
            }

            // I want to return a union of the two select lists...
            // return new SelectList(unionedList, "Value", "Text");

        }

public class SelectListItem
    {
        public SelectListItem();

        public bool Selected { get; set; }
        public string Text { get; set; }
        public string Value { get; set; }
    }
//这将返回两个选择列表中的“union ALL”。。。
返回新的选择列表(newSelectList.Concat(oldSelectList),“值”,“文本”);
//这将返回两个选择的不同值的并集,
//前提是SelectListItem是可计算的
返回新的选择列表(newSelectList.Union(oldSelectList),“值”,“文本”);
//这将返回两个选择的不同值的并集,
//给出了一个IEqualityComparer均衡Comparer的实现
//这将在语义上比较两个SelectListItems
返回新的选择列表(newSelectList.Union(oldSelectList,equalityComparer),“值”,“文本”);
//这将返回两个选择列表中的“union ALL”。。。
返回新的选择列表(newSelectList.Concat(oldSelectList),“值”,“文本”);
//这将返回两个选择的不同值的并集,
//前提是SelectListItem是可计算的
返回新的选择列表(newSelectList.Union(oldSelectList),“值”,“文本”);
//这将返回两个选择的不同值的并集,
//给出了一个IEqualityComparer均衡Comparer的实现
//这将在语义上比较两个SelectListItems
返回新的选择列表(newSelectList.Union(oldSelectList,equalityComparer),“值”,“文本”);

我不知道它的存在。我一定是第一次用理智来掩饰它。啊!它可能不会产生您期望的结果,因为它使用
object.Equals()
来确定并集。如果是这样的话,就会有一个重载,它需要一个
IEqualityComparer
来处理这个问题。我不知道它的存在。我一定是第一次用理智来掩饰它。啊!它可能不会产生您期望的结果,因为它使用
object.Equals()
来确定并集。如果是这种情况,则会出现一个重载,它需要一个
IEqualityComparer
,让您可以处理这个问题。我更喜欢使用中间的一个,并使我的SelectListItem类IEquitable。GetHashCode函数看起来是什么样的?请检查以下内容:。这很简单,也不太可能产生冲突(但要知道,将消息分解为较小的位大小的单向散列不能保证不会发生冲突)。我更喜欢使用中间的散列,并使我的SelectListItem类成为IEquitable类。GetHashCode函数看起来是什么样的?请检查以下内容:。这很简单,也不太可能产生冲突(但请理解,将消息分解为较小的位大小的单向散列不能保证没有冲突)。
return new SelectList(newSelectList.Concat(newSelectList), "Value", "Text");
// This will return a "union ALL" of the two select lists...
return new SelectList(newSelectList.Concat(oldSelectList), "Value", "Text");

//this will return a union of distinct values of the two selects,
//PROVIDED that SelectListItem is IEquatable
return new SelectList(newSelectList.Union(oldSelectList), "Value", "Text");

//this will return a union of distinct values of the two selects,
//given an implementation of an IEqualityComparer<SelectListItem> equalityComparer
//that will semantically compare two SelectListItems
return new SelectList(newSelectList.Union(oldSelectList, equalityComparer), "Value", "Text");