我有几种方法使用类似的linq语句但不同的方法使它们在自己的方法中.所以说,为了争论,我有以下linq片段,它在所有方法中重复(真正的片段会比这长得多):
where su.ObjId == serviceUserId
where cl.StaffMemberId == staffMemberId
Run Code Online (Sandbox Code Playgroud)
如果我在SQL中工作,我可以按如下方式连接重复的SQL:
private string GetRepeatedSql()
{
return "where su.ObjId = serviceUserId and cl.StaffMemberId = staffMemberId";
}
private void DoSomething()
{
string mySql = "Select * from ...... lots of sql .." + GetRepeatedSql() + ".. some more sql";
}
Run Code Online (Sandbox Code Playgroud)
(关于连接SQL字符串的常见健康警告一并注明).
Linq有同等的东西吗?我不得不在几个地方做出改变 - 这似乎违反了DRY原则.
谢谢!
如果我错了,请纠正我,但我一直认为LINQ语句在您实际使用之前不会被执行.(从LINQ到NHibernate)
如果确实如此,您只需添加现有语句所需的内容即可.例如:
var temp=from x in Sometable select x;
Run Code Online (Sandbox Code Playgroud)
然后添加一个where子句:
temp = from x in temp where x.ID==1234 select x;
Run Code Online (Sandbox Code Playgroud)
然后订购
temp=from x in temp order by x.ID select x;
Run Code Online (Sandbox Code Playgroud)
我不会撒谎我从来没有这样做过,但我认为它应该有效.如果有人知道这不起作用请解释原因.谢谢.
在msdn上找到了这个:http://msdn.microsoft.com/en-us/library/bb397906.aspx
在LINQ中,查询的执行与查询本身不同; 换句话说,仅仅通过创建查询变量就没有检索到任何数据.
因此,通过创建变量,您还没有检索到任何数据.虽然我上面这样做可能会返回数据,因为我正在调用from x in temp更改查询.
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |