Я размещаю это больше, потому что я хотел бы узнать больше, потому что моя работа - вокруг в основном избегать использования 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-
Недавно прочитав, что основной причиной, по которой Fortran является быстрее, чем C / C ++, в числовых вычислениях, заключается в том, что нет сглаживания указателя.
, по-видимому, используя ограничение
или __
__
__ Ограничение __
ключевых слов позволяет в случае в случае, чтобы указать отсутствие сглаживания указателя для данного элемента памяти.
Компилятор ICC, по-видимому, имеет вариант -FNO-псевдонимов
, который позволяет во всем мире предположить, что никаких псевдонимов не присутствует. На GCC есть -FNO-строгий псевдонимы
, который применяется только к подмножению всех ситуаций сглаживания.
Есть ли вариант, присутствующий в GCC, или есть некоторые случаи, когда не предполагается никаких сглажиний, при использовании определенных флагов оптимизации?