C# 从列表中获取特定属性的步骤
我的清单内容如下:C# 从列表中获取特定属性的步骤,c#,list,C#,List,我的清单内容如下: List<MyData> DICT_list = new List<MyData>() { new MyData{ Dictionay="Alpha", Dimension="Length", Classes=null}, new MyData{ Dictionay="Alpha", Dimension="Length", Classes="Process"}, new MyData{ Dictionay="Alpha", Dimen
List<MyData> DICT_list = new List<MyData>()
{
new MyData{ Dictionay="Alpha", Dimension="Length", Classes=null},
new MyData{ Dictionay="Alpha", Dimension="Length", Classes="Process"},
new MyData{ Dictionay="Alpha", Dimension="breath", Classes="Activity"},
new MyData{ Dictionay="Alpha", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Height", Classes=null},
new MyData{ Dictionay="Beta", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Length", Classes="Workflow"}
};
任何帮助都将不胜感激
-----有问题的更新----
public struct MyData
{
public string Dictionary { get; set; }
public string Dimension { get; set; }
public string Classes { get; set; }
}
并执行如下:
Want to get All the Classes of Dimension=length in dictionary=ALPHA only...
var SelectedValue = DICT_list.Where(d => d.Dimension == "Length" && d.Dictionary == "Alpha").Select(d => d.Class);
foreach (var value in SelectedValue)
{
MessageBox.Show(value.ToString());
}
我在MessageBox.showvalue.ToString行收到以下错误;作为
对象引用未设置为对象的实例
我的列表包含所需的元素,我已经通过以下命令对其进行了测试
string count = DICT_list.Count.ToString(); // Here count gives the value 14 which has the desired Dictionary and DImension name along with several classes which I need to fetch..
----------更新问题-----
我想我知道为什么会出现这个错误如果我没有错的话,因为我的新维度的类的第一个值在列表中是空的,我为这个错误的问题感到抱歉,现在通过测试知道了,我能做些什么来忽略空值并从列表中移动到下一个吗?首先-简单地按维度和词汇过滤列表。第二,仅通过选择类从结果中投影每个项目。这将给你带来无数: 或查询语法:
var query = from d in DICT_list
where d.Dimension == "Length" && d.Dictionay == "Aplha"
select d.Classes;
我建议你看看@Sergey Berezovskiy给出的解决方案是否能正常工作。 这是一个证明
class Program
{
static void Main(string[] args)
{
List<MyData> DICT_list = new List<MyData>()
{
new MyData{ Dictionay="Aplha", Dimension="Length", Classes="Process"},
new MyData{ Dictionay="Aplha", Dimension="breath", Classes="Activity"},
new MyData{ Dictionay="Aplha", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Length", Classes="Workflow"}
};
var query = DICT_list.Where(d => d.Dimension == "Length" && d.Dictionay == "Aplha")
.Select(d => d.Classes);
foreach (var VARIABLE in query)
{
Console.WriteLine(VARIABLE.ToString());
}
Console.ReadLine();
}
}
试着改写你的问题。我听不懂这个怪诞的句子。它看起来像个谜!重新措辞你的问题!DICT_list.Selectdl=>dl.Classes有帮助吗?@DominicKexel..抱歉,我已经解释了我的问题,希望你现在能理解..使用LINQ表达式可以帮助你。第一个查询中的Dictionay==Aplha需要是d.Dictionary==Aplha。。总之,dis帮不了我的忙,但它给了我字典和所有维度的数据,@Reshma对不起,你说得对,应该是d.Dictionay。您所说的是不可能的-此查询包含按维度筛选,因此无法获得所有维度。。我已经更新了我的问题,你能看一下在引导我通过它时发生的错误吗?@Reshma你选择的是d.Class而不是d.Class。即使这只是一个输入错误,您也选择了可以为空的字符串。然后,当调用value.ToString时,就会出现NullReferenceException。解决方案-因此字符串已经是字符串,您不需要调用ToString。只是显示值…非常感谢,我通过跳过空值并检查其他值使其工作,但您的解决方案,我不知道错误,感谢您的解释,我知道虽然它是基本的,我知道它很晚了,但我很高兴了解它..再次感谢您。。我已经更新了我的问题,你能看一下发生在引导我通过它的错误…哦,嗨…我想我知道为什么dis错误是来的,因为我的类的第一个值在列表中是空的,我很抱歉错误的解释,现在通过测试知道了,我能做些什么忽略空值并从列表中移动到下一个。。
class Program
{
static void Main(string[] args)
{
List<MyData> DICT_list = new List<MyData>()
{
new MyData{ Dictionay="Aplha", Dimension="Length", Classes="Process"},
new MyData{ Dictionay="Aplha", Dimension="breath", Classes="Activity"},
new MyData{ Dictionay="Aplha", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Height", Classes="Workflow"},
new MyData{ Dictionay="Beta", Dimension="Length", Classes="Workflow"}
};
var query = DICT_list.Where(d => d.Dimension == "Length" && d.Dictionay == "Aplha")
.Select(d => d.Classes);
foreach (var VARIABLE in query)
{
Console.WriteLine(VARIABLE.ToString());
}
Console.ReadLine();
}
}
var query = DICT_list.Where(d => d.Dimension == "Length" && d.Dictionay ==
"Aplha" && d.Classes != null).Select(d => d.Classes);