什么集合允许我按对象的参数进行搜索
本文关键字:参数 搜索 对象 集合 允许我 什么 | 更新日期: 2023-09-27 18:28:53
我有一个这样的电话对象:
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
我有一个循环,在那里我解析原始数据,每次通过时我都会创建一个新的电话对象。我现在的任务是定义一个集合来存放这些电话对象。
我不确定他们需要什么样的收藏品。我需要能够在代码中定义grade
和network
,并轻松地返回价格,这样就不可能有一个通用列表(我认为)。我应该使用多维数组吗?
每个年级只有一部手机&网络(这是同一部手机的所有数据,只是不同的价格取决于网络或等级)。
我能用什么最简单的集合来实现在grade
和network
中喂食并获得价格的目标?
您应该使用一个类型化列表。定义一个类:
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>();
既然你说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
的多个组合,这将引发错误。