基于对象/类型成员查找字典值
本文关键字:成员 类型 查找 字典 于对象 对象 | 更新日期: 2023-09-27 18:28:39
我有如下定义的字典,
Dictionary<string, SampleObject> test = new Dictionary<string, SampleObject>();
test.Add("A", null);
test.Add("B", new SampleObject()
{
ID = "1",
Value1 = "BBBBB1",
Value2 = "BBBBB2"
});
test.Add("C", new SampleObject()
{
ID = "1",
Value1 = "CDCDCD1",
Value2 = "CDCDCD2"
});
test.Add("D", new SampleObject()
{
ID = "2",
Value1 = "XXFFA",
Value2 = "XXFFB"
});
如何获取对象/类型为null的列表/计数?
如何获取列表/计数其中的对象/类型属性(ID=1)?
我试过了,但出现了错误。
var ones = test.Where(t => t.Value.ID.Equals("1"));
您只需要首先清除null:
var nulls = test.Count(c => c.Value == null);
var ones = test.Count(c => c.Value != null && c.Value.ID == "1");
问题是,添加到字典中的第一个项是null
,因此在执行谓词t.Value.ID.Equals("1")
时,对于该值,t.Value
是null
,而得到的错误是NullReferenceException
。
代码基本上是正确的,您可以避免将null
值添加到字典中,或者在谓词中测试它们
var ones = test.Where(t => t.Value != null && t.Value.ID.Equals("1"));
您可以通过以下方式获取null
对象的计数:
var ones = test.Where(t => t.Value == null).Count();
对于ID等于1:的对象
var ones = test.Where(t => t.Value != null && t.Value.ID == 1).Count();
我已经看到了很好的答案。只是想补充一下,从C#6.0中,您将能够使用Null条件运算符:c#6.0。添加小的修改后,您的代码就可以了吗?其中null出现在值上。
var ones = test.Where(t => t.Value?.ID.Equals("1"));