Добавьте пользовательскую скалярную функцию в качестве свойства к классу Linq-To-Sql - PullRequest
0 голосов
/ 18 декабря 2008

У меня следующий запрос Linq ..., который выполняется правильно:

from t in Tasks
where LookupTaskStarted(t.TaskId) == true
select new
{
     t.TaskId,
     t.Number,
     Started = LookupTaskStarted(t.TaskId)
}

Есть ли способ создать это свойство в классе Linq-To-Sql? Или я всегда должен ссылаться на это так?

Ответы [ 3 ]

1 голос
/ 18 декабря 2008

У меня нет ответа на ваш вопрос, но у меня есть предложение по рефакторингу. Вместо того, чтобы дважды вызывать LookupTaskStarted (), вы можете записать значение с помощью предложения let:

from t in Tasks
let started = LookupTaskStarted(t.TaskId)
where started
select new
{
    T.TaskId,
    t.Number,
    Started = started
}

После этого я понял, что если вы фильтруете по started, вам не нужно свойство Started, потому что все они будут истинными.

1 голос
/ 18 декабря 2008
class MyTask
{
   public int TaskId {get; set;}
   public int Number {get; set;}
   public bool Started {get; set;}
   public MyTask(Task t)
   {
       TaskId = t.TaskId;
       Number = t.Number;
       Started = LookupTaskStarted(t.TaskId)
   }
}
// :
// :
from t in Tasks
where LookupTaskStarted(t.TaskId) == true
select new MyTask(t);
0 голосов
/ 18 декабря 2008

Все классы linq-sql создаются как частичные. Вы можете расширить и добавить это свойство.

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