#linq #c#-4.0
#linq #c #-4.0
Вопрос:
Как получить значение authRoleCode= AHGENERAL с помощью запроса linq или лямбда-выражения из json ниже. ниже кода я предоставил структуру класса под этим json. я пробовал вот так.
var str = request.ApplicationsAccess.CategoryAccessType.Where(x=>x.),
как получить данные для него.
"applicationsAccess": {
"categoryAccessType": [{
"categoryCode": "Accident and Health",
"basicApplications": {
"applictaionType": "basicApplications",
"roleAmpLabelAdded": [{
"roleAMPLabel": "General access to marketing amp; resources",
"authRoleCode": "AHGENERAL",
"authRoleName": "Aamp;H - General access to marketing amp; resources".
Это структура класса, которую мы используем для приведенного выше json.
public partial class ApplicationsAccess
{
[JsonProperty("categoryAccessType")]
public List<CategoryAccessTyp> CategoryAccessType { get; set; }
}
public partial class CategoryAccessTyp
{
[JsonProperty("categoryCode")]
public string CategoryCode { get; set; }
[JsonProperty("applicationTypes")]
public List<ApplicationType> ApplicationTypes { get; set; }
}
public partial class ApplicationType
{
[JsonProperty("applictaionType")]
public string ApplictaionType { get; set; }
public List<RoleAmpLabelAdded> RoleAmpLabelAdded { get; set; }
public ApplicationsAdded ApplicationsAdded { get; set; }
}
public partial class ApplicationsAdded
{
[JsonProperty("applications")]
public List<Applications> Applications { get; set; }
}
public partial class RoleAmpLabelAdded
{
[JsonProperty("roleAMPLabel")]
public string RoleAmpLabel { get; set; }
[JsonProperty("authRoleCode")]
public string AuthRoleCode { get; set; }
[JsonProperty("authRoleName")]
public string AuthRoleName { get; set; }
[JsonProperty("applications")]
public List<Applications> Applications { get; set; }
}
public partial class Applications
{
[JsonProperty("appId")]
public long AppId { get; set; }
[JsonProperty("appCode")]
public long AppCode { get; set; }
[JsonProperty("appName")]
public string AppName { get; set; }
}
Пожалуйста, дайте нам знать, если вам понадобится дополнительная информация
TIA.
Комментарии:
1. Что такое
request
объект? Анализируется ли JSON для объектной модели? И я не совсем понимаю, что именно не работает. Не могли бы вы, пожалуйста, предоставить код того, что вы делаете, какrequest
объект инициализируется. Кроме того, было бы здорово, если бы вы также могли предоставить сообщение об ошибке.2. @E.Щербо я добавил структуру классов.
3. Спасибо. Что именно вам нужно получить? Объекты
RoleAmpLabelAdded
класса, которыйAuthRoleCode
равен"AHGENERAL"
?4. @Е.Щербо да
Ответ №1:
Если вам нужны объекты RoleAmpLabelAdded
класса, которые имеют AuthRoleCode
свойство, равное "AHGENERAL"
, то вы можете попробовать следующий код:
IEnumerable<RoleAmpLabelAdded> result = request
.ApplicationAccess
.CategoryAccessType
.SelectMany(c => c.ApplicationTypes.SelectMany(t => t.RoleAmpLabelAdded))
.Where(r => r.AuthRoleCode == "AHGENERAL");
Чтобы получить все AuthRoleCode
-ы:
IEnumerable<string> result = request
.ApplicationAccess
.CategoryAccessType
.SelectMany(c => c.ApplicationTypes.SelectMany(t => t.RoleAmpLabelAdded))
.Select(r => r.AuthRoleCode);
Комментарии:
1. Спасибо за ответ. можем ли мы получить весь AuthRoleCode?
2. Конечно, вам просто нужно вызвать
Select
еще раз. Я обновлю свой ответ.3. я хочу, чтобы весь код авторизации не был похож на AuthRoleCode == «AHGENERAL».