什么集合允许我按对象的参数进行搜索

本文关键字:参数 搜索 对象 集合 允许我 什么 | 更新日期: 2023-09-27 18:28:53

我有一个这样的电话对象:

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

我有一个循环,在那里我解析原始数据,每次通过时我都会创建一个新的电话对象。我现在的任务是定义一个集合来存放这些电话对象。

我不确定他们需要什么样的收藏品。我需要能够在代码中定义gradenetwork,并轻松地返回价格,这样就不可能有一个通用列表(我认为)。我应该使用多维数组吗?

每个年级只有一部手机&网络(这是同一部手机的所有数据,只是不同的价格取决于网络或等级)。

我能用什么最简单的集合来实现在gradenetwork中喂食并获得价格的目标?

什么集合允许我按对象的参数进行搜索

您应该使用一个类型化列表。定义一个类:

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

如果使用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;

我觉得你想得太多了。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的多个组合,这将引发错误。