【问题标题】:List of List C# question or something else any pointers in coding this列表 C# 问题列表或其他任何代码中的指针
【发布时间】:2011-05-17 13:35:56
【问题描述】:

我在用 C# 编码时需要一些帮助

我有篮子列表及其 Global_Weights 以千克为单位的总篮子:

篮 1、篮 2、篮 3、篮 4

0.1, 0.3, 0.9,0.6

每个篮子都包含以下内容:

名称、Level1、level2、Local_Weights

名称:字符串类型

Level1:双重类型

Level2:双重类型

Local_Weights:双重类型

每个篮子将由 N 个 (Name,Level1, level2,Local_Weights) 组成,并且有 M 个篮子 N 和 M 是变量,将是用户输入

我应该为此使用列表列表还是其他任何关于如何进行编码的指针?

我将如何访问每个篮子中的成员并对其执行计算。

【问题讨论】:

  • 更大的问题是什么?根据您在做什么,有多种方法可以正确创建列表/其他结构。例如,如果您正在执行排序算法,最好使用数组进行即时访问。
  • 创建一个 Basket 类并使用 List 或 Hashtable。

标签: c# list linked-list


【解决方案1】:

您将使用包含BasketInfo 类的对象列表的类Basket 并创建该Basket 类的列表:

class Basket
{
    public Basket()
    {
        BasketInfos = new List<BasketInfo>();
    }

    public double GlobalWeight
    {
        get
        {
            return BasketInfos.Sum(x => x.LocalWeight); 
        }
    }

    public IList<BasketInfo> BasketInfos { get; set; }
}

class BasketInfo
{
    public string Name { get; set; }
    public double Level1 { get; set; }
    public double Level2 { get; set; }
    public double LocalWeight { get; set; }
}

var baskets = new List<Basket>();

【讨论】:

    【解决方案2】:

    大概是这样的吧?

    class Basket
    {
        private List<Payload> _payload = new List<Payload>();
    
        public List<Payload> Payload
        {
            get { return _payload; }
        }
    
        public double Weight
        { 
            get { /* calculate total weight */; }
        }
    }
    
    class Payload
    {
        public string Name { get; set; }
        public double Level1 { get; set; }
        public double Level2 { get; set; }
        public double Local_Weight { get; set; }
    }
    

    也许还有一些用法,比如:

    var baskets = new List<Basket>();
    
    // Create a new basket with some payload
    var newBasket = new Basket();
    newBasket.Payload.Add(   
        new Payload {Name = "MyName", Level1 = 1, Level2 = 2, Local_Weight = 3});
    baskets.Add(newBasket);
    
    // Access all payloads in all baskets for example
    foreach (var payload in baskets.SelectMany(basket => basket.Payload))
    {
        Console.WriteLine(payload.Name);
    }
    

    也许像Head First C# 这样的书也可以使用。祝你好运!

    【讨论】:

      【解决方案3】:

      你可以使用这种东西。

      Dictionary<string, List<MyClass>> var = new Dictionary<string, List<MyClass>>();//where string key is the basket name, MyClass is a class containing properties like Name,Level1, level2,Local_Weights
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多