This method is not supported regarding the result of a materialized query.

Take a look at my code here:

public static ItemType GetItem(int id) { ItemType it = new ItemType(); using (var context = matrix2.matrix2core.DataAccess.Connection.GetContext()) { var q = (from ci in context.Item where ci.ID == id let TemplateID = ci.TemplateID let Groups = from x in context.CriteriaGroup where x.TemplateID == TemplateID select new { x } let CriteriaItems = from x in context.CriteriaItem where Groups.Select(y => yxID).Contains(x.CriteriaGroupID) select new { x } select new { ci.ID, ci.Name, ci.CategoryID, ci.Description, ci.ItemValue, TemplateID, Groups, CriteriaItems, ItemValues = from x in context.ItemValue where x.ItemID == id select new { x, CriteriaID = x.CriteriaItem.Criteria.ID } }).FirstOrDefault(); if (q != null) { it.ID = q.ID; it.CategoryID = q.CategoryID; it.Name = q.Name; it.TemplateID = q.TemplateID; it.Description = q.Description; it.CriteriaGroups = new List<CriteriaGroupType>(); it.CriteriaItems = new List<CriteriaItemType>(); it.ItemValues = new List<ItemValueType>(); foreach (var x in q.ItemValues) { ItemValueType ivt = new ItemValueType(); ivt.CriteriaItemID = xxCriteriaItemID; ivt.CriteriaID = x.CriteriaID; ivt.Data = xxData; ivt.ID = xxID; ivt.ItemID = xxItemID; it.ItemValues.Add(ivt); } /////////error when I added the orderby clause foreach (var x in q.Groups.OrderBy(x => xxSortOrder)) { CriteriaGroupType cgt = new CriteriaGroupType(); cgt.ID = xxID; cgt.Name = !string.IsNullOrEmpty(xxName) ? xxName : "Group" + xxID; cgt.SortOrder = xxSortOrder; cgt.TemplateID = xxTemplateID; it.CriteriaGroups.Add(cgt); } /////////error when I added the orderby clause foreach (var temp in q.CriteriaItems.OrderBy(x => xxSortOrder)) { CriteriaItemType cit = new CriteriaItemType(); cit.ID = temp.x.ID; cit.CriteriaGroupID = temp.x.CriteriaGroupID; cit.GroupName = (temp.x.Name != null) ? temp.x.Name : "Group" + temp.x.ID; cit.CriteriaID = temp.x.CriteriaID; cit.CriteriaName = temp.x.Criteria.Name; cit.Name = !string.IsNullOrEmpty(temp.x.Name) ? temp.x.Name : temp.x.Criteria.Name; cit.Options = temp.x.Options; it.CriteriaItems.Add(cit); } } } return it; } 

Instead of letting SQL handle sorting (OrderBy), I wanted asp.net to do sorting. I took the sort from the SQL linq query and put it in the foreach loop. When I did this, I got an error. Is there any way to fix this?

+6
c # linq entity-framework
source share
2 answers

You should be able to switch from IQueryable to IEnumerable with a simple

var q2 = q.ToList(); Strike>

I meant, of course, that:

 var groups = q.Groups.ToList(); 
+5
source share

Take a look at this link .
Perhaps the advice made by Julie Lerman will be useful in your case.

0
source share

All Articles