我有一个包含Person对象的对象列表,该对象可能为null.我想要做的是获取非空的第一个Person对象的Name属性的值,如果所有Person对象都为null,则返回一个空字符串.
我最好的尝试如下:
string userName = MyObjectList.FirstOrDefault(x => x.Person != null).Person.Name ?? string.Empty;
Run Code Online (Sandbox Code Playgroud)
我想我明白为什么这不起作用; 如果Person对于列表中的每个对象都为null,那么我们得到默认值,该值为null,当我尝试访问属性Person时将抛出一个空引用错误.
我可以通过检查是否有任何对象不是null然后得到第一个来获得我想要的结果,但我宁愿在一个LINQ语句中完成它.任何意见都表示赞赏,谢谢.
我的ViewModel中有一个名为DisableNextButton的布尔值,我想用它来禁用视图中的按钮。我应该补充一点,该按钮位于if语句内。
最终,我尝试在DisableNextButton为true时添加disabled属性。
这是我不成功的实现:
@if(true)
{
<button type="button" @{ if (Model.DisableNextButton) { <text>disabled="disabled"</text> } } >Next</button>
}
Run Code Online (Sandbox Code Playgroud)
我应该注意,这为我提供了一个功能已启用的按钮。
我有两个对象列表,我想比较特定的属性.如果每个列表中的记录对于指定的属性具有相同的值,我希望查询返回true.
我目前正在使用嵌套的foreach循环执行此操作,但我想使用单个LINQ执行此操作.
bool doesEachListContainSameFullName = false;
foreach (FullName name in NameList)
{
foreach (FullName anotherName in AnotherNameList)
{
if (name.First == anotherName.First && name.Last == anotherName.Last)
{
doesEachListContainSameFullName = true;
break;
};
}
if (doesEachListContainSameFullName)
break;
}
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,每个列表中的字段彼此不相等,因此直接比较这两个字段不是一个选项.