8,497
社区成员
发帖
与我相关
我的任务
分享
var users=form u in context.Users select u;
跟
var users=context.Users;
的区别,那么我觉得你可以研究一下几年前的 context.Users;
返回的数据的类型是什么?
假设那个时候,这个表达式返回类型跟 from ..... select .... 就是相同(相兼容)类型,那么我们就可以知道,那个时候的人本来就可以直接写 context.Users,那么你“搜索到的示例,都要”写成 from ..... 形式可能是“凑巧了”,而并不是不能写。var query = from x in array where x.a==1 select x;
根写var query = array.Where(x=> x.a==1);
主要只是个人体验的区别。
你看的例子的重点在于根据 if 表达式而多次(多层)修改这个 query,最终在 linq 延迟加载机制下,在最终向数据库发送 sql 查询语句时你会看到(调试跟踪到)只有一个编译好的 sql 查询语句发送给数据库。只要做到这一点就达到目的了。using (var context=new ...())
{
var users=form u in context.Users where ....... select u;
if (name!="") users=from u in user where ..... select u;
if (tel!="") users=from u in user where ..... select u;
}
实际上很可能其实是这样的,而不是你写的那种混合写法。