(См this вопрос для небольшого фона на этом.)IEnumerable.GroupJoin и Entity Framework объекты
Мне нужно, чтобы совпасть пункты в List<T>
коллекции Entity записей с List<T>
коллекции объектов (объект Entity коллекция относится к типу Citation, а другая относится к типу sRecord). Существует взаимная связь 1 к 1 между второй коллекцией и первой, где каждый из объектов во втором совпадает с точностью до одной записи в первом (но не обязательно наоборот). Они совпадают в одном поле с идентификатором в классе Citation и id в классе sRecord. Попытка запустить через вложенные петли в соответствии с ними быстро стала увязшей, поэтому я искал средство, чтобы сопоставить все коллекции один раз, а затем перебирать этот согласованный набор.
Вот как я соединял предлагаемую группу присоединиться заявление:
var draftMatches = draftRecords.GroupJoin(sRecords,
Citation => Citation.ID,
stiRecord => sRecord.id,
(Citations, sRecords) =>
new
{
Citation = Citations,
sRecord = sRecords.Select(sRecord => sRecord)
});
У меня нет много уверенности, что я получил это право.
Что мне нужно сделать с полученным согласованным набором, это сравнить поля в объекте sRecord с полями объекта Citation, чтобы определить, нужно ли обновлять объект Citation. Поскольку я работаю с Entity, я предположил, что мне нужно сохранить ссылку на объект Citation, когда я обновляю его в отдельном методе (разделенный для повторного использования кода), так вот как я пытаюсь сделать это обновление:
DateTime recordDate = RecordUtilities.ConvertToDate(match.sRecord.FirstOrDefault().modifiedDate);
int comparison = recordDate.CompareTo((DateTime)match.Citation.modifiedDate);
if (comparison > 0)
{
EntityUtilities.MapToCitation(ref match.Citation, match.sRecord.FirstOrDefault());
updatedDraft++;
}
на данный момент, я получаю сообщение об ошибке IntelliSense на match.Citation в вызове MapToCitation, заявив, что «свойство, индексатор или динамический доступ члена не может быть принят в качестве отказа или реф параметра. "
Мне нужно убедиться, что объект Citation, который сохраняется, когда я делаю context.Save() обновляется из объекта sRecord, если это необходимо. Мне также нужно убедиться, что я экономлю время с совпадением по сравнению с предыдущим кодом. Что мне нужно изменить для моего кода для достижения этих целей?
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
Приношу свои извинения; не понял, что я сделал это. – Ant