我最初使用foreach循環,然後在循環中的每一個元素,我執行LINQ查詢,像這樣:對這種查詢類型使用LINQ的正確方法?
foreach (MyObject identifier in identifiers.Where(i => i.IsMarkedForDeletion == false))
{
if (this.MyEntities.Identifiers.Where(pi => identifier.Field1 == pi.Field1 && identifier.Field2 == pi.Field2 && identifier.Field3 == pi.Field3).Any())
{
return false;
}
}
return true;
然後我修改了它,像這樣:
if (identifiers.Any(i => !i.IsMarkedForDeletion && this.MyEntities.Identifiers.Where(pi => i.Field1 == pi.Field1 && i.Field2 == pi.Field2 && i.Field3 == pi.Field3).Any()))
{
return false;
}
return true;
我的問題是這仍然是使用LINQ的錯誤方式?基本上,我想消除對foreach循環的需要(似乎我應該能夠擺脫它),並通過不對列表中的每個元素執行單獨的數據庫查詢來更快地進行數據庫查詢。相反,我想爲所有元素執行一個查詢。謝謝!
「標識符」,「MyEntities」和「MyEntities.Identifiers」的**類型**是什麼?他們在內存集合或數據庫實體? –
只有MyEntities.Identifiers在數據庫中。其他一切都在記憶中。 – Andrew
換句話說,'標識符'在內存集合中,'MyEntities.Identifiers'是'DbSet'。 –