Борьба с синтаксисом метода LINQ для поиска значенияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Борьба с синтаксисом метода LINQ для поиска значения

Сообщение Anonymous »

Получение этого JSON из API (API метаданных GA4)

{
"dimensions": [
{
....
}
],
"metrics": [
....
{
"apiName": "keyEvents",
"uiName": "Key events",
"description": "The count of key events. Marking an event as a key event affects reports from time of creation. It doesn't change historic data. You can mark any event as key in Google Analytics, and some events (such as `first_open` or `purchase`) are marked as key events by default.",
"deprecatedApiNames": [
"conversions"
],
"type": "TYPE_FLOAT",
"category": "Event"
},
{
"apiName": "newUsers",
"uiName": "New users",
"description": "The number of users who interacted with your site or launched your app for the first time (event triggered: first_open or first_visit).",
"type": "TYPE_INTEGER",
"category": "User"
},


У меня есть функция для возврата uiName из apiName:
Я хочу вернуть uiName там, где соответствует apiName или где оно присутствует в устаревший список.
Но мои навыки Linq с JSON не соответствуют этой задаче. Я подумал, что это будет что-то вроде этого, но
JsonElement не имеет метода ToList().
// param "type" in ["dimensions","metrics"]
private string MemberFriendlyName(JsonDocument metadata, string type, string apiName)
{
string uiName = metadata
.RootElement
.GetProperty(type)
.EnumerateArray()
.Where(me => (
(me.TryGetProperty("apiName", out me) && me.GetString() == apiName)
||
(me.TryGetProperty("deprecatedApiNames", out me) && me.ToList().Contains(apiName))
))
//.Where(me => me.GetPropertyNullable("apiName")?.GetString() == apiName)
.FirstOrDefault()
.GetPropertyNullable("uiName")?.GetString();
return uiName;
}



Подробнее здесь: https://stackoverflow.com/questions/784 ... up-a-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»