в первый раз я должен создать расширение для linq2sql, как это сделать? - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть свойство в одну строку

Public ReadOnly Property DateToUniversal(ByVal dt As Nullable(Of Date)) As String
    Get
        Return If(dt.HasValue, dt.Value.ToString("u").Substring(0, 10), "")
    End Get
End Property

если я пытаюсь использовать это в

from n in mydatacontext 
select new myObj {n.field1,n.field2, DateToUniversal(n.field3)}

это не работает постоянно, потому что LINQ2SQL не может преобразовать это в SQL-запрос.

есть ли способ сделать это?

1 Ответ

1 голос
/ 22 декабря 2009

Вам нужно будет превратить его в два запроса:

var query = (from n in mydatacontext select new {n.field1,n.field2, n.field3}).AsEnumerable();

query = from n in query select new {n.field1, n.field2, DateToUniversal(n.field3)};

Важно, чтобы query было IEnumerable вместо var (или IQueryable) Важно, чтобы вы позвонили AsEnumerable(), чтобы вы получили IEnumerable<T>, так как мы хотите заставить второй запрос использовать LINQ to Objects по результатам первого (LINQ to SQL) запроса.

Я сейчас не перед ВС, но это должно сработать.


Спасибо itowlson за указание на то, что это должно быть IEnumerable<T>, а не просто IEnumerable!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...