最近参考网上代码:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.Linq;namespace WMVC.Models{ public class RepositoryTest<T> where T : class { public DataContext context; public RepositoryTest(DataContext context) { this.context = context; } public IEnumerable<T> FindAll(Func<T, bool> exp) { return context.GetTable<T>().Where(exp); } }}
可以实现:
DataContext content = new MyDataContext();RepositoryTest rp = new RepositoryTest<my_tbl>(DataContext);rp.FindAll(t => t.name == "jack"));return View(rp);
那么下面我想实现:
DataContext content = new MyDataContext();RepositoryTest rp = new RepositoryTest<my_tbl>(DataContext);rp.FindAll(1,t => t.name == "jack")); //这里多加了一个条件return View(rp);
我修改了代码如下,但是无法编译,请教各位前辈应该如何修改,谢谢!
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.Linq;namespace WMVC.Models{ public class RepositoryTest<T> where T : class { public DataContext context; public RepositoryTest(DataContext context) { this.context = context; } public IEnumerable<my_tbl> FindAll(int pid, Func<my_tbl, bool> exp) { var result = from a in context.GetTable<my_tbl>() where a.parent_id == pid select a; //result.Where(t=>t.name == "jack"); 可通过 //result.Where(exp); 出错 return result; } }}
实际方法定义代码如下:
public IEnumerable<MenuClasses> listBom(int? id,Func<MenuClasses, bool> exp) { id = id == null ? 0 : id; SourceClassDataContext s = (SourceClassDataContext)context; var result = from a in s.GetTable<tbl_SourceClasses>() join b in s.class_f_Cid(id) on a.id equals b.id into prods from b in prods orderby b.temp_orderby select new MenuClasses() { id = a.id, parent_id = a.parent_id, class_order = a.class_order, class_name = a.class_name, temp_orderby = b.temp_orderby, Level = b.Level }; //result = result.Where(b => b.Level == 1); //可通过 //result = result.Where<MenuClasses>(exp); //无法通过 return result; }
1 回答
- 1 回答
- 0 关注
- 463 浏览
添加回答
举报
0/150
提交
取消