C# 什么集合允许我按对象上的参数进行搜索?
我有一个电话对象,如下所示:C# 什么集合允许我按对象上的参数进行搜索?,c#,C#,我有一个电话对象,如下所示: public string grade { get; set; } public string network { get; set; } public decimal price { get; set; } 我有一个循环,在这里我解析原始数据,在每次传递时我创建一个新的phone对象。我现在的任务是定义一个集合来保存这些电话对象 我不知道我需要什么样的收藏。我需要能够在我的代码中定义等级和网络,并轻松获取价格,这样就不可能有通用列表(我认为)。我应该使用多维数组
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
我有一个循环,在这里我解析原始数据,在每次传递时我创建一个新的phone对象。我现在的任务是定义一个集合来保存这些电话对象
我不知道我需要什么样的收藏。我需要能够在我的代码中定义等级
和网络
,并轻松获取价格,这样就不可能有通用列表(我认为)。我应该使用多维数组吗
每个等级和网络将只有一部手机(这是同一部手机的所有数据,只是不同的价格取决于网络或等级)
我可以使用什么最简单的集合来实现输入
等级
和网络
并获取价格的目标?您应该使用键入的列表。定义一个类:
public class Phone
{
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
}
然后定义一个列表:
var list = new List<Phone>();
您应该使用键入的列表。定义一个类:
public class Phone
{
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
}
然后定义一个列表:
var list = new List<Phone>();
您应该使用键入的列表。定义一个类:
public class Phone
{
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
}
然后定义一个列表:
var list = new List<Phone>();
您应该使用键入的列表。定义一个类:
public class Phone
{
public string grade { get; set; }
public string network { get; set; }
public decimal price { get; set; }
}
然后定义一个列表:
var list = new List<Phone>();
如果使用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=。。。
字符串级别=“…”;
字符串网络=“…”;
var phone=list.FirstOrDefault(
p=>
p、 等级==等级&&
p、 网络==网络);
如果(电话!=null)
{
//找到一个
var价格=电话价格;
如果使用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=。。。
字符串级别=“…”;
字符串网络=“…”;
var phone=list.FirstOrDefault(
p=>
p、 等级==等级&&
p、 网络==网络);
如果(电话!=null)
{
//找到一个
var价格=电话价格;
如果使用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=。。。
字符串级别=“…”;
字符串网络=“…”;
var phone=list.FirstOrDefault(
p=>
p、 等级==等级&&
p、 网络==网络);
如果(电话!=null)
{
//找到一个
var价格=电话价格;
如果使用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=。。。
字符串级别=“…”;
字符串网络=“…”;
var phone=list.FirstOrDefault(
p=>
p、 等级==等级&&
p、 网络==网络);
如果(电话!=null)
{
//找到一个
var价格=电话价格;
我想你想得太多了。列表应该可以
var phones = new List<Phone>();
如果有多个相同的等级
和网络
的组合,这将抛出一个错误。我认为您考虑得太多了。列表
应该可以正常工作
var phones = new List<Phone>();
如果有多个相同的等级
和网络
的组合,这将抛出一个错误。我认为您考虑得太多了。列表
应该可以正常工作
var phones = new List<Phone>();
如果有多个相同的等级
和网络
的组合,这将抛出一个错误。我认为您考虑得太多了。列表
应该可以正常工作
var phones = new List<Phone>();
如果有多个相同的grade
和network
的组合,这将抛出一个错误。如果要将所有三个值一起存储在一个对象中,那么这无关紧要;只需使用List
。如果将grade
和network
放入一个对象中,则使用字典
ma这很有道理。我想你想得太多了,一个列表似乎fine@BradleyDotNET不要忘记重写<代码>等号和<代码> GetHashCode <代码>。如果你想键入值语义,而不是引用一个。考虑对数据库进行一些研究。现在,对于允许基于某个“键”或“索引”查找值的数据结构的一般问题,最好的答案是使用数据库。@IlyaIvanov是的,这对于字典
实现非常重要。如果要将所有三个值存储在一个对象中,则无所谓;只需使用List
.如果你把等级
和网络
放在一个对象中,那么字典
就很有意义了。我认为你考虑得太多了,一个列表
似乎fine@BradleyDotNET如果希望键具有值语义而不是引用语义,请不要忘记覆盖Equals
和GetHashCode
。考虑对数据库进行一些研究。当你的问题超出了你现在提出的简单情况时,你对数据结构的一般问题的最佳答案是允许使用一些“KEY”或“索引”来查找值。如果你把grade
和network
放在一个对象中,那么字典
就很有意义了。我觉得你想得太多了,一个列表似乎是fine@BradleyDotNET不要忘记覆盖EqualS/<代码>和<代码> GetHashCode < /代码>如果你想键入值语义,而不是引用一个。考虑对数据库进行一些研究。当你的问题超出了你现在提出的简单情况时,对数据结构的一般问题的最佳答案是允许基于一些“密钥”或“索引”查找值。e一个数据库。@IlyaIvanov是的,这对于字典的实现是很重要的。如果你想把这三个值都存储在一个对象中,那没关系;只要使用列表。如果你把等级和网络放在一个对象中,那么字典就很有意义了。我认为是的你想得太多了,一个列表似乎fine@BradleyDotNET如果希望键具有值语义,请不要忘记覆盖Equals
和GetHashCode
,