我有以下LINQ查询可以正常工作:
var comps = (from c in tc.companies
join r in tc.registry
on c.Key equals r.Key
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
现在我希望查询只返回FieldValue等于从TextBox1提交的值的那些记录
我试过了:
var comps = (from c in tc.companies
join r in tc.registry
on c.Key equals r.Key
where r.FieldValue==TextBox1
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
return View(comps);
和
var comps = (from c in tc.companies
join r in tc.registry
on c.Key equals r.Key
where r.FieldValue==TextBox1
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
comps=comps.Where(x => x.FieldValue== TextBox1);
return View(comps);
但两者都不会返回任何数据。我做错了什么?
更新
public ActionResult Index(string TextBox1)
{
if (TextBox1 != null)
{
var comps = (from c in tc.companies
join r in tc.registry
on c.Key equals r.Key
where r.FieldValue==TextBox1
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
return View(comps);
}
}
解决了!答案如下!不是我想的 - 颠倒查询中的表顺序。有趣的pafr是没有过滤器的查询无论表顺序如何都有效
答案 0 :(得分:0)
问题可能在于您认为自己在做什么以及实际做了什么
你会看到与大多数编程语言一样,在C#中,String不是值类型而是对象,而你正在做的事情实际上是在比较两个地址,所以只需检查textBox1中的对象是否与你拥有的对象相同作为r.FildValue和你真正要做的是检查它的内容,在C#中,每个objeact都有方法Equals用于比较其他。
尝试
where TextBox1.Equals(r.FieldValue)
另一个认为你应该检查的是TextBox1的值是否正确
您可以使用System.Diagnostic.Debug.WriteLine(" MyText" + TextBox1);这样做
干杯:)
答案 1 :(得分:0)
var comps = (from c in tc.companies
join r in tc.registry
on c.Key equals r.Key
where r.FieldValue==TextBox1
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
return View(comps);
使用:
var comps = (from r in tc.registry
join c in tc.companies
on r.Key equals c.Key
where r.FieldValue==TextBox1
select new { FieldValue=r.FieldValue, Name=c.Name, Company=c.Company,Industry=c.Industry,Rank=c.Rank});
return View(comps);
它就像一个魅力!