【问题标题】:C# Is there a good way to store multiple objects and still be easy to access [closed]C# 是否有一种存储多个对象并且仍然易于访问的好方法 [关闭]
【发布时间】:2021-04-01 15:20:19
【问题描述】:

也许很难理解,但我想知道是否有一种方法可以存储多个变量,例如 2d 数组,但可以使用命令轻松访问它?

例子:

ItemID = "1";ItemName = "Apple";ItemPrice = 10; ItemLocation = "Storage";
ItemID = "2";ItemName = "Bread";ItemPrice = 20; ItemLocation = "Outside";
ItemID = "3";ItemName = "TV";ItemPrice = 30; ItemLocation = "House";

所以我可以使用Item.Name(1); 之类的命令来获取它的名称,并使用Item.ID("Apple"); 来获取它的ID(名称和ID 是唯一的)。所以以后,当我得到项目的 ID 或名称时,我可以请求一切。

类似这样的:

int IID = Item.ID("Bread");
string IName = Item.Name(2);
int IPrice = Item.Price(IID);
string ILocation = Item.Location(IID);
//So .ID return the ID but requires string Name
//And everything else requires the ID

提前致谢

-咖啡

对不起,我的语法不好还在学习:x

【问题讨论】:

  • 据我了解,您在 Datarow 或 Tuple 对象之间!?
  • 是的,我认为元组是我要找的。有没有办法重命名项目,所以它不是 Item1,Item2,Item3 .....
  • Item 应该是您的项目列表的辅助类吗?目前尚不清楚Item 是什么,根据我认为它是列表中的特定项目的名称。不是列表本身...
  • Sry Item 只是我为命令选择的一个名称,例如我希望它看起来像什么

标签: c# arrays class multidimensional-array


【解决方案1】:

您可以创建一个自定义列表:

using System.Collections.Generic;
using System.Linq;

...

public class Item
{
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    public string ItemLocation { get; set; }
}

public class ItemList : List<Item>
{
    public Item GetByName(string name)
    {
        return this.FirstOrDefault(x => x.ItemName == name);
    }

    public Item GetById(int id)
    {
        return this.FirstOrDefault(x => x.ItemId== id);        
    }
}

那么你可以这样使用它:

var itemList = new ItemList();
itemList.Add(new Item { ItemId = 1, ItemName = "Some Item", ItemLocation = "Wherever" });
itemList.Add(new Item { ItemId = 2, ItemName = "Some Other Item", ItemLocation = "" });

var item = itemList.GetByName("Some Item");

【讨论】:

    【解决方案2】:

    不确定我是否完全理解你的问题,但在这里试一试

    有很多方法可以给这只猫剥皮,这里有一些想法:

    • 您可以编写类、结构体、元组来对 Item 类型进行建模
    • 您可以拥有一个使用 ID 作为键的字典,并将项目对象存储为值。这将允许通过 ID 轻松快速地查找,而不是按名称搜索或
    • 将项目列表存储在标准集合中,如 List 并使用 linq 查询过滤和查找项目或
    • 编写您自己的 Collection 类,该类可能派生自 List,然后您可以编写自定义方法,例如 ID()、Name() 或
    • 像这样在您使用的集合类型上编写扩展方法 ID()、Name() 等
    public static Item ID(this IList<Item> items, string name) 
    {   
      return items.SingleOrDefault(e=>e.Name == name); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多