C# 将列表作为对象属性的对象列表

C# 将列表作为对象属性的对象列表,c#,string,list,object,C#,String,List,Object,声明对象列表: List<object> result = new List<object>(); Params中可能有更多字符串,这就是我使用联接的原因 在这里,它通过创建形式为(string,int)的对象来工作。但我的目标是使它成为(string,list of int),如果有两个对象具有相同的字符串,就可以像我之前写的那样将它们组合起来 我试图添加idslist作为对象的第二个属性,但可能没有正确执行 result.Add(new { pars = x, i

声明对象列表:

List<object> result = new List<object>();
Params
中可能有更多字符串,这就是我使用联接的原因

在这里,它通过创建形式为
(string,int)
的对象来工作。但我的目标是使它成为
(string,list of int)
,如果有两个对象具有相同的字符串,就可以像我之前写的那样将它们组合起来

我试图添加
ids
list作为对象的第二个属性,但可能没有正确执行

 result.Add(new { pars = x, ids = dataBinding.Id });

也许我没有完全理解这个场景,但我怀疑使用下面的方法会符合您的目的

List<Dictionary<string, List<int>>>
列表

当密钥不存在时,您将其添加,当密钥存在时,您只需将其添加到列表中。

也许我不完全理解该场景,但我怀疑使用以下方法将符合您的目的

List<Dictionary<string, List<int>>>
列表

当密钥不存在时,您添加它,当它存在时,您只需添加到列表中。

您可以使用LINQ,尤其是
GroupBy

Dictionary<string, List<int>> descriptionIDs = myData
    .GroupBy(x => x.myDescription)
    .ToDictionary(g => g.Key, g => g.Select(x => x.Id).ToList());
现在,您可以轻松获取ID列表:

var result = descriptionLookup.Select(g => new { pars = g.Key, ids = g.Select(x=> x.Id).ToList() }).ToList():

您可以使用LINQ,尤其是
GroupBy

Dictionary<string, List<int>> descriptionIDs = myData
    .GroupBy(x => x.myDescription)
    .ToDictionary(g => g.Key, g => g.Select(x => x.Id).ToList());
现在,您可以轻松获取ID列表:

var result = descriptionLookup.Select(g => new { pars = g.Key, ids = g.Select(x=> x.Id).ToList() }).ToList():

下面的程序描述了当前的泛型集合类型,如果键已经存在,还允许添加新值

using System;
using System.Collections.Generic;
                    
public class Program
{
    public static void Main()
    {
        
        MyProgram p = new MyProgram();
        
        p.Add("First" , 5);
        p.Add("Second" , 8);
        p.Add("Third" , 9);
        p.Add("First" , 6);
        p.Add("First" , 7);
        
        p.PrintDictionary();
    }
}


public class MyProgram
{
    private Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
    
    public void Add(string key, int value)
    {
        if (dict.ContainsKey(key))
        {
            dict[key].Add(value);
        }
        else
        {
            dict.Add(key, new List<int>() {value});
        }
    }
    
    public void PrintDictionary()
    {
        foreach(var keyValue in dict)
        {
            Console.WriteLine("Key : " + keyValue.Key);
            
            foreach(var val in keyValue.Value)
            {
                Console.WriteLine(string.Format("\t Value : {0}", val));
            }
        }
    }
}
关键:第二

Value : 8
关键:第三

Value : 9

选中此项。

下面的程序描述了当前的通用集合类型,如果键已存在,还允许添加新值

using System;
using System.Collections.Generic;
                    
public class Program
{
    public static void Main()
    {
        
        MyProgram p = new MyProgram();
        
        p.Add("First" , 5);
        p.Add("Second" , 8);
        p.Add("Third" , 9);
        p.Add("First" , 6);
        p.Add("First" , 7);
        
        p.PrintDictionary();
    }
}


public class MyProgram
{
    private Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
    
    public void Add(string key, int value)
    {
        if (dict.ContainsKey(key))
        {
            dict[key].Add(value);
        }
        else
        {
            dict.Add(key, new List<int>() {value});
        }
    }
    
    public void PrintDictionary()
    {
        foreach(var keyValue in dict)
        {
            Console.WriteLine("Key : " + keyValue.Key);
            
            foreach(var val in keyValue.Value)
            {
                Console.WriteLine(string.Format("\t Value : {0}", val));
            }
        }
    }
}
关键:第二

Value : 8
关键:第三

Value : 9

检查此项。

您考虑过使用字典吗?您可以对
myData
变量使用扩展方法。使用字典您考虑过使用字典吗?如果更合适,您可以对
myData
变量使用扩展方法。使用字典