json - 如何在 .NET Core 中使用 LINQ 根据另一个属性条件返回属性
问题描述
{
"value": [{
"odata.type": "SP.User",
"odata.id": "https://www.test.com/_api/Web/GetUserById(37)",
"odata.editLink": "Web/GetUserById(37)",
"Id": 37,
"IsHiddenInUI": false,
"LoginName": "i:0#.w|domain\\jos",
"Title": "Mr joseph",
"PrincipalType": 1,
"Email": "joe@yopmail.com",
"IsEmailAuthenticationGuestUser": false,
"IsShareByEmailGuestUser": false,
"IsSiteAdmin": false,
"UserId": {
"NameId": "s-1-5-21-2613750078-2161710047-3166685486-1473",
"NameIdIssuer": "urn:office:idp:activedirectory"
}
}, {
"odata.type": "SP.User",
"odata.id": "https://www.test.com/_api/Web/GetUserById(90)",
"odata.editLink": "Web/GetUserById(90)",
"Id": 90,
"IsHiddenInUI": false,
"LoginName": "i:0#.w|domain\\pam",
"Title": "anthony",
"PrincipalType": 1,
"Email": "anthony@yopmail.com",
"IsEmailAuthenticationGuestUser": false,
"IsShareByEmailGuestUser": false,
"IsSiteAdmin": false,
"UserId": {
"NameId": "s-1-5-21-2613750078-2161710047-3166685486-1437",
"NameIdIssuer": "urn:office:idp:activedirectory"
}
}
}
在反序列化这个 JSON 之后,我想根据 Id 获取标题,所以如果 Id = 37 我想返回一个包含 Mr joseph 的字符串。是否可以使用 LINQ 做到这一点?提前谢谢你的帮助...
我对这门课很感兴趣:
public class UsersInformationValue
{
[JsonProperty("odata.type")]
public string Odata_Type { get; set; }
[JsonProperty("odata.id")]
public string Odata_Id { get; set; }
[JsonProperty("odata.editlink")]
public string Odata_EditLink { get; set; }
public int Id { get; set; }
public bool IsHiddenInUI { get; set; }
public string LoginName { get; set; }
public string Title { get; set; }
public int PrincipalType { get; set; }
public string Email { get; set; }
public bool IsEmailAuthenticationGuestUser { get; set; }
public bool IsShareByEmailGuestUser { get; set; }
public bool IsSiteAdmin { get; set; }
public UserIdDetails UserId { get; set; }
}
解决方案
您可以通过投影轻松做到这一点。
var title = values.Where(v => v.Id == 37).Select(v => v.Title).FirstOrDefault();