Обработка собственности в linq to sql - PullRequest
0 голосов
/ 16 апреля 2010

Это мой первый проект LINQ TO SQL, поэтому, безусловно, мой вопрос может быть наивным.

До сих пор я использовал для создания нового свойства в Business Object рядом с каждым свойством DateTime, потому что мне нужно выполнить некоторую обработку в моем свойстве DateTime и показать его в специальном строковом формате для привязки к элементам управления пользовательского интерфейса. Как:

private DateTime _insertDate; /// /// I have "InertDate" field in my Table on Database /// public DateTime InsertDate { get { return _insertDate; } set { _insertDate = value; } }</p> <p>// Because i need to do some processing I create a readonly string property that pass InsertDate to Utility method and return special string Date public string PInsertDate { get { return Utility.ToSpecialDate(_insertDate); } }

У меня вопрос, я не знаю, как это сделать в LINQ. Мне нравится следовать, но я получаю ошибку во время выполнения. «Метод« System.String ToSpecialDate (System.Object) »не имеет поддерживаемого перевода в SQL»

ToosDataContext db = new ToosDataContext(); var newslist = from p in db.News select new {p.NewsId,p.Title,tarikh =MD.Utility.ToSpecialDate( p.ReleaseDate)};</p> <p>GridView1.DataSource = newslist; GridView1.DataBind();

1 Ответ

2 голосов
/ 16 апреля 2010

Необходимо отделить запрос, выполняемый в базе данных, от обработки, которая должна быть выполнена в процессе. Попробуйте это:

var newslist = db.News
                 // First do a select in SQL
                 .Select(p => new {p.NewsId, p.Title, p.ReleaseDate})
                 .AsEnumerable() // Do the rest in process
                 .Select(p => new {p.NewsId, p.Title, 
                         tarikh = MD.Utility.ToSpecialDate(p.ReleaseDate) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...