(見this問題要問在這一個小背景。)IEnumerable.GroupJoin和Entity Framework對象
我需要在List<T>
集合實體記錄項目有List<T>
集合對象的匹配(實體對象集合是引用類型,另一個是sRecord類型)。第二個集合和第一個集合之間存在一對一的關係,第二集合中的每個對象都與第一個集合中的一個記錄完全匹配(但不一定相反)。它們匹配Citation類中的ID和sRecord類中的ID。試圖通過嵌套循環來匹配它們很快就陷入了困境,所以我尋找了一種方法來匹配整個集合,然後遍歷匹配的集合。
我這是怎麼放在一起建議組加入聲明:
var draftMatches = draftRecords.GroupJoin(sRecords,
Citation => Citation.ID,
stiRecord => sRecord.id,
(Citations, sRecords) =>
new
{
Citation = Citations,
sRecord = sRecords.Select(sRecord => sRecord)
});
我沒有太多的信心,我得到它的權利。
我需要做的結果匹配的集合是將sRecord對象中的字段與Citation對象中的字段進行比較,以確定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++;
}
在這一點上,我得到的match.Citation的智能感知錯誤在調用MapToCitation,說明「的屬性,索引器或動態成員訪問可能不被作爲out或ref參數傳遞。 「
我需要確保在執行context.Save()時從sRecord對象更新(如果適用)時保存的Citation對象。我還需要確保我在前面的代碼中節省了匹配時間。爲了實現這些目標,我需要更改我的代碼?
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
我的歉意;沒有意識到我已經做到了。 – Ant