C# 是不是有一种存储多个对象并且仍然易于访问的好方法 [关闭]
Posted
技术标签:
【中文标题】C# 是不是有一种存储多个对象并且仍然易于访问的好方法 [关闭]【英文标题】: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 只是我为命令选择的一个名称,例如我希望它看起来像什么
【参考方案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);
【讨论】:
以上是关于C# 是不是有一种存储多个对象并且仍然易于访问的好方法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章