C# Linq 返回 Null 或空值属性
C# Linq returning Null or Empty valued properties
我已经查找了此处找到的 (2) 个问题,但无法转化为我的工作,这可能是最简单的问题之一。我有一个 class 的属性,这些属性正在被早期阶段读取的数据填充。我有下面的表达式来列出所有 NON-NULL、Non-empty、Non-Whitespace 值,但无论我做什么它都不起作用——意思是,returns 也是空属性。
(c 为整数):
var props = MyClass.MyApi.Test[c]
.GetType()
.GetProperties()
.Select(x => new { name = x.Name, value = x.GetValue(MyClass.MyApi.Test[c]) })
.Where
(
x => x != null && !String.IsNullOrWhiteSpace(x.ToString())
)
.ToList();
然后我得到,例如
{ name = lalala, value = 1 }, { name = aURL, value = http://servertest:7707/table/some/thing }, { name = table_name, value = MY.TABLE }, { name = else, value = }, { name = more, value = }, { name = myindex, value = }
我只是无法删除没有价值的属性,例如上面的 属性 more
,或 myindex
..
任何 advice/help 将不胜感激..
您目前正在检查 x
是否不为空,但 x
是完整的项目。
您应该检查 x.value
是否不为 null
像这样
var props = MyClass.MyApi.Test[c]
.GetType()
.GetProperties()
.Select(x => new { name = x.Name, value = x.GetValue(MyClass.MyApi.Test[c]) })
.Where
(
x => x.value != null && !String.IsNullOrWhiteSpace(x.value.ToString())
)
.ToList();
编辑:
正如 Andrei15193 所建议的
where
可以使用
更简洁一些
.Where
(
x => x.value is string stringValue ? !string.IsNullOrWhiteSpace(stringValue) : x.value != null
)
我已经查找了此处找到的 (2) 个问题,但无法转化为我的工作,这可能是最简单的问题之一。我有一个 class 的属性,这些属性正在被早期阶段读取的数据填充。我有下面的表达式来列出所有 NON-NULL、Non-empty、Non-Whitespace 值,但无论我做什么它都不起作用——意思是,returns 也是空属性。 (c 为整数):
var props = MyClass.MyApi.Test[c]
.GetType()
.GetProperties()
.Select(x => new { name = x.Name, value = x.GetValue(MyClass.MyApi.Test[c]) })
.Where
(
x => x != null && !String.IsNullOrWhiteSpace(x.ToString())
)
.ToList();
然后我得到,例如
{ name = lalala, value = 1 }, { name = aURL, value = http://servertest:7707/table/some/thing }, { name = table_name, value = MY.TABLE }, { name = else, value = }, { name = more, value = }, { name = myindex, value = }
我只是无法删除没有价值的属性,例如上面的 属性 more
,或 myindex
..
任何 advice/help 将不胜感激..
您目前正在检查 x
是否不为空,但 x
是完整的项目。
您应该检查 x.value
是否不为 null
像这样
var props = MyClass.MyApi.Test[c]
.GetType()
.GetProperties()
.Select(x => new { name = x.Name, value = x.GetValue(MyClass.MyApi.Test[c]) })
.Where
(
x => x.value != null && !String.IsNullOrWhiteSpace(x.value.ToString())
)
.ToList();
编辑:
正如 Andrei15193 所建议的
where
可以使用
.Where
(
x => x.value is string stringValue ? !string.IsNullOrWhiteSpace(stringValue) : x.value != null
)