Получить все ключи в словаре [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Получить все ключи в словаре [закрыто]

Сообщение Anonymous »

У меня есть коллекция объектов, содержащих словарь, и я хотел бы извлечь только ключи, а не значения в словаре (которые намного больше, чем ключи, в отличие от примера ниже). Я использую MongoDb.Driver 2.10 для C#.
Предполагая, что у меня есть следующая коллекция:

Код: Выделить всё

{ "_id" : "1", "Contents":{"item11":{}, "item12":{}, "summary":"1" } },
{ "_id" : "2", "Contents":{"item21":{}, "summary":"2" } },
{ "_id" : "3", "Contents":{"item31":{}, "item32":{}, "item33":{}, "summary":"" } }
Мне нужен запрос, который возвращает следующее:

Код: Выделить всё

{ {Id:"1", "ContentCategories":["item11", "item12", "summary"]},
{Id:"2", "ContentCategories":["item21", "summary"]},
{"Id":"3", "ContentCategories":["item31", "item32", "item33", "summary"] }
Вот код, который делает то, что я хочу, но занимает слишком много памяти (потому что, опять же, объекты в Содержании огромны< /em>.) Он также извлекает резюме на случай, если оно каким-то образом станет актуальным, но мне кажется, что это не должно быть связано с вопросом.

Код: Выделить всё

class Program
{
public sealed class DataRM
{
[BsonId]
public string _id { get; set; }

public Dictionary Contents { get; set; } = new();
}

public class Dto
{
public string Id { get; set; }
public List ContentCategories { get; set; }
public string Summary { get; set; }
}

public static void Main(string[] args)
{
var client = new MongoClient($"mongodb://root:example@server.address:27017");
var database = client.GetDatabase("Test");
var collection = database.GetCollection("temp");
var filter = Builders.Filter.Empty;
var records = collection.Find(filter).ToList();
var result =
records.Select(
x => new Dto
{
Id = x._id,
ContentCategories = x.Contents.Keys.ToList(),
Summary = x.Contents["summary"] as string
});
}
}
Я хотел бы разделить ключи на сервере, а не извлекать весь словарь и делать это в коде.

Подробнее здесь: https://stackoverflow.com/questions/787 ... dictionary
Ответить

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

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

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

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

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