Может быть, это трудно понять, но я хочу знать, есть ли способ хранить несколько переменных, таких как 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");
, чтобы получить его идентификатор (имена и идентификаторы уникальны). Поэтому позже я могу запросить все, когда получу идентификатор или имя элемента.
Что-то вроде этого:
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
Да, я думаю, что кортеж - это то, что я искал. Есть ли способ переименовать элементы, чтобы это были не Item1, Item2, Item3.....
Должен ли Item
быть вспомогательным классом для вашего списка элементов? Непонятно, что такое Item
, судя по названию, я бы предположил, что это конкретный элемент в списке. Не сам Список...
Sry Item был просто именем, которое я выбрал для команды, например, как я хочу, чтобы она выглядела.
Вы можете создать собственный список:
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");
Не уверен, что полностью понял ваш вопрос, но здесь
Есть много способов снять шкуру с этих кошек, и вот некоторые мысли:
public static Item ID(this IList<Item> items, string name)
{
return items.SingleOrDefault(e=>e.Name == name);
}
Насколько я понимаю, вы находитесь между объектом Datarow или Tuple!?