我如何从另一种方法调用 linq?
Posted
技术标签:
【中文标题】我如何从另一种方法调用 linq?【英文标题】:How can i call from another method a linq? 【发布时间】:2017-09-28 08:34:07 【问题描述】:在这种方法中,我创建了 linq。 Linq 工作正常,我可以正确查看数据,但问题是我需要能够从其他方法调用它。
protected IQueryable method ()
var v = (from a in BAS1
join b in BAS2 on a.TIP equals b.TIP
join c in BAS3 on a.COM equals c.COM
join d in BAS4 on c.PROV equals d.PROV
join e in BAS5 on d.ID_REG equals e.ID_REG
select new
a.ID,
b.SIG,
e.ID_REG,
);
return v.ToString();
通过这种方法,我想获取 linq 并对其进行过滤,但它在 v = v.Where(x => ....
中显示错误 public ActionResult method2()
var v = method ();
var id = Request.QueryString["id"];
var filter_sig = Request.QueryString["filter_sig"];
var filter_reg = Request.QueryString["filter_reg"];
if (filter_sig!= "")
decimal dfiltesig = decimal.Parse(filter_sig);
v = v.Where(x => x.SIG==dfiltesig );
if (id!= "")
v = v.Where(x => x.ID.ToLower().Contains(id.ToLower()));
if (filter_reg!= "")
v = v.Where(x => x.ID_REG.ToLower().Contains(filter_reg.ToLower()));
【问题讨论】:
【参考方案1】:从您的返回语句 return v.ToString();
中删除该 ToString()
调用,而只返回查询语句
return v;
【讨论】:
试试看还是报错。它说“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”【参考方案2】:public class MyThing
public string ID get;set;
public string ID_REG get;set;
public decimal SIG get;set;
protected IQueryable<MyThing> method()
return (from a in BAS1
join b in BAS2 on a.TIP equals b.TIP
join c in BAS3 on a.COM equals c.COM
join d in BAS4 on c.PROV equals d.PROV
join e in BAS5 on d.ID_REG equals e.ID_REG
select new MyThing
a.ID,
b.SIG,
e.ID_REG,
);
【讨论】:
我不能这样做,因为我在 Models 文件夹中拥有的属性,而我正在从 Controller 文件夹中执行此操作 你不能做什么? 我是用 MVC 做的吗以上是关于我如何从另一种方法调用 linq?的主要内容,如果未能解决你的问题,请参考以下文章