C# EF-查询大型数据集导致内存不足异常

C# EF-查询大型数据集导致内存不足异常,c#,sql,xml,entity-framework,C#,Sql,Xml,Entity Framework,我有一个包含几个xml字段的数据表。我正在使用EF获取数据,其中: List<tblMSASAN> msa = ctx.tblMSASANs.Where(s => s.LCMGSupportLevel != "decommissioned").ToList(); List msa=ctx.tblMSASANs.Where(s=>s.LCMGSupportLevel!=“退役”).ToList(); 然后使用foreach迭代列表,将xml字段拉入xmldocument,查询

我有一个包含几个xml字段的数据表。我正在使用EF获取数据,其中:

List<tblMSASAN> msa = ctx.tblMSASANs.Where(s => s.LCMGSupportLevel != "decommissioned").ToList();
List msa=ctx.tblMSASANs.Where(s=>s.LCMGSupportLevel!=“退役”).ToList();
然后使用foreach迭代列表,将xml字段拉入xmldocument,查询每个节点,更新属性,然后保存上下文

但是,数据集太大,我遇到内存不足异常。 因此,我需要能够首先查询xml以返回较小的数据集

List<tblWinServer> servers = ctx.tblWinServers.AsNoTracking().Where(s => s.LCMGSupportLevel != "decommissioned" && ( Convert.ToString(s.TapeDrives).Contains("Calyx") ||Convert.ToString(s.DiskShelves).Contains("Calyx"))).ToList();
List servers=ctx.tblWinServers.AsNoTracking().Where(s=>s.LCMGSupportLevel!=“decommissioned”&&(Convert.ToString(s.TapeDrives).Contains(“Calyx”)| Convert.ToString(s.diskssheels.Contains(“Calyx”)).ToList();
但这不适用于NotSupportedException

有什么想法吗?

AsNoTracking()方法返回IQueryable,但如果要在Where子句中使用ToString()方法,则必须将IQueryable转换为IEnumerable:

List<tblWinServer> servers = ctx.tblWinServers.AsNoTracking().AsEnumerable().Where(s => s.LCMGSupportLevel != "decommissioned" && ( Convert.ToString(s.TapeDrives).Contains("Calyx") ||Convert.ToString(s.DiskShelves).Contains("Calyx"))).ToList();
List servers=ctx.tblwinserver.AsNoTracking().AsEnumerable().Where(s=>s.LCMGSupportLevel!=“退役”&&&(Convert.ToString(s.TapeDrives).Contains(“Calyx”)| | Convert.ToString(s.disksshelfs.Contains(“Calyx”)).ToList();

的可能重复。这正是OP不想要的:“数据集太大”。