我在这里有一个linq语句,我在“surname”(u.Surname)字段中得到“null”。我想在返回return语句之前用“blank”关键字替换它。返回不会返回带空格的行。
var user = await graphClient.Users.Request().GetAsync();
return JsonConvert.SerializeObject(user.Where(u => !string.IsNullOrEmpty(u.Surname) && ( u.Surname.ToLower().StartsWith(textValue) || u.Surname.ToUpper().StartsWith(textValue.ToUpper()))), Formatting.Indented);
现在
Lastname FirstName email
ABC abc@email.com
Something DEF def@email.com
ghg ghg@email.com
预期
Lastname FirstName email
blank ABC abc@email.com
Something DEF def@email.com
blank ghg ghg@email.com
你能告诉我怎么做吗?
var users = user.Select(u => { u.Surname = u.Surname ?? "blank"; return u; });
答案 0 :(得分:1)
你也有这个textValue
约束,将它移到Graph查询会好得多。这将解决源头的null问题。
当u.surname.ToUpper() .StartsWith(textValue.ToUpper())
您不必检查其他ToLower()和中性版本时,您可以将3(!)测试折叠成一个。
但我不确定如何在MS Graph中这样做。
如果您仍想在查询后过滤:
var user = await graphClient.Users.Request().GetAsync();
var user2 = user
.Select(u => { u.Surname = u.Surname ?? "blank"; return u; })
.Where(u => u.surname.ToUpper().StartsWith(textValue.ToUpper())
;
return JsonConvert.SerializeObject(user2, Formatting.Indented ));