Как использовать алгоритм соответствия фасок для поиска «похожих изображений»

Я хотел бы попросить дополнительную информацию о том, как алгоритм соответствия фасок (алгоритм сопоставления краев) можно использовать для поиска «похожих» изображений. Я хотел бы знать, возможно ли поставить «оценку» для сопоставленных результатов. {ItemType it = new ItemType (); using (var context = matrix2.matrix2core.DataAccess.Connection.GetContext ()) {...

Взгляните на мой код здесь:

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 => y.x.ID).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 = x.x.CriteriaItemID;
                ivt.CriteriaID = x.CriteriaID;
                ivt.Data = x.x.Data;
                ivt.ID = x.x.ID;
                ivt.ItemID = x.x.ItemID;
                it.ItemValues.Add(ivt);
            }

            /////////error when I added the orderby clause
            foreach (var x in q.Groups.OrderBy(x => x.x.SortOrder))
            {
                CriteriaGroupType cgt = new CriteriaGroupType();
                cgt.ID = x.x.ID;
                cgt.Name = !string.IsNullOrEmpty(x.x.Name) ? x.x.Name : "Group" + x.x.ID;
                cgt.SortOrder = x.x.SortOrder;
                cgt.TemplateID = x.x.TemplateID;
                it.CriteriaGroups.Add(cgt);
            }

            /////////error when I added the orderby clause 
            foreach (var temp in q.CriteriaItems.OrderBy(x => x.x.SortOrder))
            {
                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;
}

Вместо того, чтобы позволить SQL обрабатывать сортировку (OrderBy), которую я хотел asp.net вместо этого сделать сортировку. Я взял сортировку из запроса SQL linq и поместил его в цикл foreach. Когда я это сделал, я получил ошибку. Есть ли способ исправить это?

6
задан nawfal 28 September 2013 в 14:01
поделиться