You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linq处理姓氏字段Null值:替换为‘blank’以返回空值行

解决LINQ查询中Surname为null被过滤的问题

我懂你的困扰——原本的查询会直接过滤掉Surname为null的用户数据,现在需要把这些null值替换成"blank",同时保留这部分行并正常匹配搜索条件对吧?

咱们可以通过两步调整代码来解决:

  1. 先处理null值:用C#的空合并运算符??把Surname的null值替换成"blank",避免这部分数据被过滤。
  2. 简化匹配逻辑:统一转成小写判断开头匹配,不用重复写ToLower()和ToUpper(),代码更简洁高效。

修改后的完整代码

var user = await graphClient.Users.Request().GetAsync();

// 先处理Surname的null值,再根据处理后的结果过滤
var processedUsers = user
    .Select(u => new {
        // 保留你需要展示的所有用户字段,比如ID、名字、邮箱等
        u.Id,
        u.GivenName,
        // 将null替换为"blank",如果要处理空字符串可改成:string.IsNullOrWhiteSpace(u.Surname) ? "blank" : u.Surname
        Surname = u.Surname ?? "blank",
        u.Mail,
        u.UserPrincipalName
    })
    .Where(u => u.Surname.ToLower().StartsWith(textValue.ToLower()));

return JsonConvert.SerializeObject(processedUsers, Formatting.Indented);

代码细节说明

  • Select投影处理:通过匿名对象替换Surname的null值,既不会修改原始用户对象,又能得到我们需要的格式。如果业务允许修改原始对象,也可以直接在Select里赋值,但匿名对象更安全。
  • 移除原过滤条件:原来的!string.IsNullOrEmpty(u.Surname)会直接排除null/空值行,现在我们要保留这些数据,所以去掉这个条件。
  • 统一小写匹配:把处理后的Surname和搜索文本都转成小写,不管输入是大写还是小写都能正确匹配,逻辑更简洁。

内容的提问来源于stack exchange,提问作者SmartestVEGA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:12