Nano Hash - криптовалюты, майнинг, программирование

Как пройти через коллекцию коллекции LINQ to Entities?

У меня есть следующий вызов LINQ to Entities для заполнения переменной коллекции:

var insuredFamily = db.Insureds.Where(x => x.ssn.Split('-')[0] == tmp[MemberId])
                      .OrderBy(x => x.fk_relation);

Как мне пройтись по элементам в коллекции, распечатав как заголовок элемента, так и значение элемента для каждой строки?

Я новичок в LINQ to Entities, поэтому все, что я пытаюсь сделать, это прокрутить построенную коллекцию и вывести заголовки и строки в файл журнала, чтобы я мог быстро увидеть, что возвращается в коллекции, не прибегая к шагу через каждую строку в отладчике. Это возможно?

Если общий цикл невозможен, можно ли установить источник данных сетки данных в переменную коллекции и просмотреть коллекцию в сетке?

27.01.2017

  • foreach петля? 27.01.2017
  • Да, но я не знаком с синтаксисом ссылки на заголовок элемента и его значение. foreach (var familyMember в insuredFamily) { foreach (var item в familyMember) { header = item.header? значение = элемент.значение? } } Это близко? 27.01.2017
  • familyMember — объект из таблицы Insureds. Если вы хотите перечислить некоторые связанные сущности из другой таблицы, то внутренний foreach должен выглядеть как foreach(var item in familtyMember.Items). Вы должны добавить определение класса Insured. Хотя бы показать его важные свойства 27.01.2017
  • Мне нужно что-то достаточно универсальное, чтобы работать с любой таблицей, на которую я ссылаюсь из базы данных. foreach (элемент var в familyMember.Items) дает мне синтаксическую ошибку, потому что .Items не определен. Каков правильный способ перебора всех свойств класса Insured? 27.01.2017
  • C# строго типизирован, поэтому попытка создать общий цикл, который будет работать для разных типов, невозможна, если только вы не прибегнете к отражению или dynamic, которые не являются типобезопасными и могут привести к ошибкам во время выполнения. 27.01.2017
  • Я новичок в LINQ to Entities, поэтому все, что я пытаюсь сделать, это прокрутить построенную коллекцию и вывести заголовки и строки в файл журнала, чтобы я мог быстро увидеть, что возвращается в коллекции, не прибегая к шагу через каждую строку в отладчике. Это возможно? 27.01.2017

Ответы:


1

Во-первых, это не может быть инструкция LINQ-to_Entities. Невозможно перевести x.ssn.Split('-')[0] == tmp[MemberId] в SQL. Если это не EF-Core, он автоматически переключается на оценку на стороне клиента, когда выражение содержит неподдерживаемую часть. Вы не говорите об этом прямо.

В любом случае, добавлять ведение журнала только для того, чтобы видеть содержимое коллекции во время отладки, излишне. Вы можете использовать немедленное окно в Visual Studio для вывода данных, когда код останавливается в точке останова.

Чтобы сделать это действительно полезным, переопределите метод ToString класса Insured. Когда я делаю это только с некоторым классом Product...

public override string ToString()
{
    return string.Format("{0}, {1}", this.Name, this.UnitPrice);
}

... и ломать отладчик сразу после строки вида...

var prod = context.Products;

.. затем в ближайшем окне я могу ввести ...

?prod.ToList()

... что дает мне:

Count = 6
    [0]: {Nike Air, 150.00}
    [1]: {Web cam, 23.00}
    [2]: {Mouse, 7.00}
    [3]: {Cool pack, 4.50}
    [4]: {Keyboard, 47.30}
    [5]: {Action cam, 73.00}

(и немного ведения журнала SQL)

Обратите внимание, что это инвазивная отладка. При вызове ToList запрос принудительно выполняется. Это может изменить состояние таким образом, что это повлияет на поведение кода. То же самое относится и к регистрации.

28.01.2017

2

Спасибо за все советы, но похоже, что следующие две строки кода сделают то, что мне нужно. Я просто хотел визуализировать результаты моих запросов LINQ to SQL.

var nationalities = db.Nationalities.OrderBy(x => x.pk_Nationality);
dgvResults.DataSource = nationalities;

Этот код просто поместит коллекцию в источник данных моего представления сетки данных, что позволит мне увидеть все содержимое.

15.02.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..