我正試圖找到一種更有效的方法,以便將其他信息添加到查詢中的列表中。例如,如果我與對象ID和StringA組對象的名單,我想查詢基於對象ID數據庫檢索StringB和StringC:從linq-to-entities查詢向列表中添加附加信息
public class SomeObject {
public int ObjectID { get; set; }
public string StringA { get; set; }
public string StringB { get; set; }
public string StringC { get; set; }
}
public void AddInformationToSomeObjects(List<SomeObject> someObjects)
{
var listOfIDs = someObjects.Select(so => so.ObjectID).ToList();
var informationToAdd = db.Table.Where(t => listOfIDs.Contains(t.ObjectID)).Select(t => new { ObjectID = t.ObjectID, StringB = t.StringB, StringC = t.StringC }).ToList();
foreach (var someObject in someObjects)
{
var information = informationToAdd.Where(i => i.ObjectID == someObject.ObjectID).FirstOrDefault();
someObject.StringB = information.StringB;
someObject.StringC = information.StringC;
}
}
有什麼辦法來查詢合併和分配到一個聲明?
Linq是一種查詢語言 - 它不打算更新實體。看起來你可能會在foreach循環中遇到n + 1問題。如果這就是你想要解決的問題,那麼在迭代它們之前,先在someObjects上做一個.ToList() – Dan