我的字典定义如下,
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"
});
如何获取对象/类型为空的列表/计数?
如何获取对象/类型属性(ID = 1)的列表/计数?
我试过这个并收到错误。
var ones = test.Where(t => t.Value.ID.Equals("1"));
答案 0 :(得分: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"));
答案 1 :(得分:1)
你只需要首先清除空值:
var nulls = test.Count(c => c.Value == null);
var ones = test.Count(c => c.Value != null && c.Value.ID == "1");
答案 2 :(得分: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();
答案 3 :(得分:1)
我已经看到了很好的答案。 只想在C#6.0中添加,您将能够使用Null-Conditional运算符: c# 6.0。 并且你的代码可以很好地添加小修改?其中null出现在值上。
var ones = test.Where(t => t.Value?.ID.Equals("1"));