什么集合允许我通过对象上的参数进行搜索?

时间:2014-11-03 19:21:16

标签: c#

我有一个电话对象:

public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }

我有一个循环,我解析原始数据,并在每次传递时创建一个新的手机对象。我现在的任务是定义一个集合来保存这些手机对象。

我不确定我需要什么样的收藏品。我需要能够在我的代码中定义gradenetwork并轻松取回价格,因此通用列表是不可能的(我认为)。我应该使用多维数组吗?

每个等级只会有一部手机和网络(这是同一部手机的所有数据,只是根据网络或等级的不同价格而定)。

我可以使用哪种最简单的收藏来实现gradenetwork以及提价的目标?

3 个答案:

答案 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>();

既然您说gradenetwork的每个组合只有一个价格,您可以使用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;

如果同一gradenetwork有多个组合,则会产生错误。