日期:2014-05-18  浏览次数:20859 次

请教 lambda

用 Linq 2 Sql

C# code

DatabaseDataContext db = new DatabaseDataContext();


public Table1 GetTable(int colId, string accountName, string accountPassword, string accountEmail)
{
    db.Table1.Where(p=> ); // 这里该怎么写一句lambda,才能符合下面的要求?
}



1. 如果 colId 小于等于 0,则忽略这个参数
2. 如果 accountName 为 null,则忽略这个参数
3. 如果 accountPassword 为 null,则忽略这个参数
4. 如果 accountEmail 为 null,则忽略这个参数
5. 如果 colId 大于 0,则忽略其他参数。
6. 如果 accountName 不为空,则作为筛选条件。
6. 在 accountName 不为空时,accountPassword 才可以进入筛选条件。
7. 如果 accountName 为空,那么即便 accountPassword 不为空也会被忽略。
8. 如果 accountEmail 不为空,则作为筛选条件

我想了半天也只能想出一个部分 

C# code


db.Table1.Where(p=> (colId<=0?p.colId>0:p.colId==colId) && (string.IsNullOrEmpty(accountEmail)?p.accountEmail!=null : p.accountEmail == accountEmail) && ......); 




但后面的就不知道该咋办了。

毕竟我第一次接触 lambda,所以希望高手可以指导下,谢谢!

------解决方案--------------------
http://blog.csdn.net/q107770540/article/details/5724013

其实你所描述的就是一个 查询字符串拼接而已
------解决方案--------------------
linq to sql在tolist之前都没有具体的查询
探讨

那个。。。。冒昧问下

var query = db.Table1; // 在这句时,是不是已经把数据库的内容都读出来了?
后面的where只是筛选这些结果对吗