我有一个电话对象:
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
我有一个循环,我解析原始数据,并在每次传递时创建一个新的手机对象。我现在的任务是定义一个集合来保存这些手机对象。
我不确定我需要什么样的收藏品。我需要能够在我的代码中定义grade
和network
并轻松取回价格,因此通用列表是不可能的(我认为)。我应该使用多维数组吗?
每个等级只会有一部手机和网络(这是同一部手机的所有数据,只是根据网络或等级的不同价格而定)。
我可以使用哪种最简单的收藏来实现grade
和network
以及提价的目标?
答案 0 :(得分:1)
您应该使用输入列表。定义一个类:
public class Phone
{
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
}
然后定义一个列表:
var list = new List<Phone>();
编辑:
根据请求,以下是如何查询。
var price = list.Where(p => p.grade = "grade" && p.network == "network").Select(p => p.price).FirstOrDefault();
答案 1 :(得分:1)
如果使用LINQ进行查询,任何列表都可以。
List<Phone> list = ...
string grade = "...";
string network = "...";
var phone = list.FirstOrDefault(
p =>
p.grade == grade &&
p.network == network );
if ( phone != null )
{
// found one
var price = phone.price;
答案 2 :(得分:1)
我认为你过分思考这一点。 List<Phone>
应该可以正常工作。
var phones = new List<Phone>();
既然您说grade
和network
的每个组合只有一个价格,您可以使用LINQ方法Single
:
string network = string.Empty; //something useful here
string grade = string.Empty;
decimal price = phones.Single(p => p.network == network && p.grade == grade).price;
如果同一grade
和network
有多个组合,则会产生错误。