将用户定义的标量函数作为属性添加到Linq-To-Sql类

时间:2008-12-18 16:57:58

标签: linq linq-to-sql

我有跟随Linq查询...正确执行:

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

无论如何在Linq-To-Sql类中创建它作为属性?或者我总是要像这样引用它?

3 个答案:

答案 0 :(得分:1)

我没有你的问题的答案,但我有一个重构建议。您可以使用let子句记录值,而不是两次调用LookupTaskStarted():

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

写完之后,我意识到如果你按started过滤,你不需要Started属性,因为它们都是真的。

答案 1 :(得分:1)

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);

答案 2 :(得分:0)

所有linq-sql类都创建为partial。您可以扩展并添加此属性。