请教 lambda

davidtsui 2012-06-14 09:54:04

用 Linq 2 Sql


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 不为空,则作为筛选条件

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



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



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

毕竟我第一次接触 lambda,所以希望高手可以指导下,谢谢!
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidtsui 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
你应该了解一下LINQ TO SQL 很重要的一特性: 延迟查询
[/Quote]

非常感謝,基礎不扎實,不好意思。
q107770540 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
那个。。。。冒昧问下

var query = db.Table1; // 在这句时,是不是已经把数据库的内容都读出来了?
后面的where只是筛选这些结果对吗
[/Quote]
你应该了解一下LINQ TO SQL 很重要的一特性: 延迟查询
devmiao 2012-06-14
  • 打赏
  • 举报
回复
别的类似。
devmiao 2012-06-14
  • 打赏
  • 举报
回复
1. 如果 colId 小于等于 0,则忽略这个参数
xxx.Where(x => colID <= 0 || x.ID == colID)
2. 如果 accountName 为 null,则忽略这个参数
xxx.Where(x => accountName == null || x.Name == accountName)
xboxeer 2012-06-14
  • 打赏
  • 举报
回复
linq to sql在tolist之前都没有具体的查询
[Quote=引用 3 楼 的回复:]

那个。。。。冒昧问下

var query = db.Table1; // 在这句时,是不是已经把数据库的内容都读出来了?
后面的where只是筛选这些结果对吗
[/Quote]
davidtsui 2012-06-14
  • 打赏
  • 举报
回复
那个。。。。冒昧问下

var query = db.Table1; // 在这句时,是不是已经把数据库的内容都读出来了?
后面的where只是筛选这些结果对吗
q107770540 2012-06-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/q107770540/article/details/5724013

其实你所描述的就是一个 查询字符串拼接而已
q107770540 2012-06-14
  • 打赏
  • 举报
回复
分开写:
var query=db.Table1;
if(colId >0)
query=query.Where(p=>p.colId==colId);
if(string.IsNullOrEmpty(accountEmail))
query=query.Where(p=>p.accountEmail ==accountEmail );

....

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧