首页 > 解决方案 > 如何在 .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; }
    }

标签: jsonlinq.net-core

解决方案


您可以通过投影轻松做到这一点。

var title = values.Where(v => v.Id == 37).Select(v => v.Title).FirstOrDefault();

推荐阅读