【问题标题】:Appending( not adding) Items of an objects in a list在列表中附加(不添加)对象的项目
【发布时间】:2013-02-22 09:36:16
【问题描述】:

这是我的疑惑之一: 如果我有一个像 ABC 这样的类,它有 A、B、C 三个项目(字符串类型)。 我为 A 运行一个循环,然后在 List 中添加 obj。 我再次为 B 运行一个循环,然后将 obj 添加到列表中。 C 也一样。

现在这不是我想要的。我从不想在每个循环之后添加 obj 。相反,我想在最后添加它们,以便列表只包含一个计数而不是三个。 有可能吗?

我知道如何将列表添加到另一个等,但我希望追加(而不是添加)。 更新: 好吧,我已经在我的问题中提到了这一点,我正在进一步解释。

public List<ABC> Method()
    {
     //Linq Query to get records
        List<ABC> Lst = new List<ABC>();
        foreach (var result in Linq)
        {
            ABC obj = new ABC (); 
       //here I make sub query to get A and add obj in list and adding in list
        }
        foreach (var result1 in Linq)
        {
            ABC obj = new ABC (); 
       //here I make sub query to get B and add obj in list and adding in list
        }
       foreach (var result1 in Linq)
        {
            ABC obj = new ABC (); 
       //here I make sub query to get C and add obj in list and adding in list
        }
        return Lst;
    }

In my List I get:
Count1=A,null,null
Count2=null,B,null
Count3=null,null,C

我想得到

Count1=A,B,C.

【问题讨论】:

  • 加一些相关代码,不然问题比较混乱
  • Add 方法附加的;我认为你需要澄清你正在寻找的区别。重新“我从不想在每个循环之后添加 obj” - 那你为什么在每个循环之后添加 obj,如果那不是你想要做的?
  • 你的意思是像myList.Add(aFound + bFound + cFound);??
  • 我得到了一种方法,不是一次又一次地创建对象,而是在获得所有值时在最后一次添加相同的对象。

标签: c# list object append add


【解决方案1】:

如果您希望所有值都是唯一的,您可以使用 HashSet,请参阅http://msdn.microsoft.com/en-us/library/bb359438.aspx

如果你还需要一个列表,你可以在最后使用 ToList 进行转换。

【讨论】:

  • 如果使用hash-set,必须注意不保证任何顺序
  • 好的调用,在这种情况下,如果要保留顺序并且您可以使用 .NET 4 msdn.microsoft.com/en-us/library/dd412070.aspx,SortedSet 可能更合适
  • 排序顺序与插入顺序不同:)
猜你喜欢
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
相关资源
最近更新 更多