小编lob*_*hat的帖子

LINQ - 返回非空对象的属性值

我有一个包含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语句中完成它.任何意见都表示赞赏,谢谢.

c# linq

12
推荐指数
1
解决办法
2万
查看次数

使用Razor将禁用的属性添加到按钮

我的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)

我应该注意,这为我提供了一个功能已启用的按钮。

c# asp.net-mvc razor

2
推荐指数
1
解决办法
1万
查看次数

LINQ:一个列表中的值与另一个列表中的值相等

我有两个对象列表,我想比较特定的属性.如果每个列表中的记录对于指定的属性具有相同的值,我希望查询返回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)

我应该补充一点,每个列表中的字段彼此不相等,因此直接比较这两个字段不是一个选项.

c# linq

0
推荐指数
1
解决办法
1451
查看次数

标签 统计

c# ×3

linq ×2

asp.net-mvc ×1

razor ×1