LINQ к объектам TOSTRING () - ни один из предложенных решений не работает?

Я размещаю это больше, потому что я хотел бы узнать больше, потому что моя работа - вокруг в основном избегать использования Linq для объектов! Было бы здорово, если бы я мог использовать это, хотя. Так что, если кто-то может просветить меня ..

Я работаю над приложением ASP.NET MVC 3 (мой первый), используя Frame First Frame Entity в качестве моей модели данных. Это будет интернет-магазин, и я работаю над контроллером «администратора», где, как администратор, вы сможете редактировать продукты и т. Д. Когда речь идет о добавлении нового продукта, вы должны указать категорию, что означает Выпадающий список категорий.

Я начал только что вернувшись в коллекцию категорий Ienumeriable из категорий в виде ViewBag, на основе информации, которую я нашел . Это казалось действительно хорошим способом приблизиться к вещам.

Но я получил ту же ошибку, вы увидите ниже. Таким образом, следуя предложению я читаю онлайн, я создал отдельную модель специально для создания новых и редактирования существующих продуктов. Коллекция категорий используется для создания раскрывающегося списка в виду.

public class ProductModel
{
    public int Id { get; set; }
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public double Price { get; set; }
    public bool IsVisible { get; set; }

    public IEnumerable Categories
    {
        get
        {
            return new DataAccess()
                .Categories
                .OrderBy(c => c.Description)
                .Select(c => new SelectListItem
                    {
                        Value = c.Id.ToString(),
                        Text = c.Description
                    });
        }
    }
}

Это приводит к следующему сообщению об ошибке: « LinQ к объектам не распознает метод метода« System.String ToString () », и этот метод не может быть переведен в выражение хранения. ». Одним из предложенного онлайн-раствора было использование методов SQLFunction, предусмотренные структурой объекта. Поэтому я попробовал это вместо этого ...

    public IEnumerable Categories
    {
        get
        {
            return new DataAccess()
                .Categories
                .OrderBy(c => c.Description)
                .Select(c => new SelectListItem
                    {
                        Value = SqlFunctions.StringConvert((double)c.Id),
                        Text = c.Description
                    });
        }
    }

, но это приводит к этому сообщению об ошибке: « Указанный метод« System.String StringConvert) (System.Nullable]). Data.Objects.sqlclient.sqlfunctions 'не может быть переведен в выражение магазина Linq в сущности. ».

Я даже попытался добавить свойство только для чтения в класс данных под названием IdasString , но это, очевидно, делает структуру объекта очень несчастной!

В конце концов, я понял, что все время, которое я не стоил в нее, и просто перестал использовать Linq. Это работает нормально, но было бы неплохо знать, есть ли «правильный» способ сделать это, что на самом деле работает!

Это мое текущее рабочее решение:

    public IEnumerable Categories
    {
        get
        {
            var dal = new DataAccess();
            var categories = dal.Categories;
            var items = new List();

            foreach (var category in categories)
                items.Add(new SelectListItem
                    {
                        Value = category.Id.ToString(),
                        Text = category.Description
                    });

            return items;
        }
    }

Так что, если кто-то уже делает это, и они думают, что они делают это «правильным» образом, тогда я хотел бы знать, что вы думаете!

-121--1586503-

GCC C / C ++ не предпринимают псевдонимы указателя , которые недавно прочитали, что основной причиной, по которой Fortran является быстрее, чем C / C ++ в числовых вычислениях, заключается в том, что нет сглаживания указателя. Видимо, используя ограничение или __restrict__ Ключевые слова ...

Недавно прочитав, что основной причиной, по которой Fortran является быстрее, чем C / C ++, в числовых вычислениях, заключается в том, что нет сглаживания указателя.

, по-видимому, используя ограничение или __ __ __ Ограничение __ ключевых слов позволяет в случае в случае, чтобы указать отсутствие сглаживания указателя для данного элемента памяти.

Компилятор ICC, по-видимому, имеет вариант -FNO-псевдонимов , который позволяет во всем мире предположить, что никаких псевдонимов не присутствует. На GCC есть -FNO-строгий псевдонимы , который применяется только к подмножению всех ситуаций сглаживания.

Есть ли вариант, присутствующий в GCC, или есть некоторые случаи, когда не предполагается никаких сглажиний, при использовании определенных флагов оптимизации?

9
задан Puppy 4 September 2011 в 11:29
поделиться