我正面临以下问题。我想要一个带有DropDowList的搜索字段,用户可以选择要搜索的项目。我必须使用这个LINQ代码而不仅仅是SQL查询。
这是我的代码:
var Metadata = from m in db.Metadatas
join mm in db.Multimedias
on m.multimediaID equals mm.multimediaID
where (m. { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue) ||
mm. { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue))
&& mm.filetype.ToString().Contains(radiobuttonvalue)
我想将类似的内容:“Dropdownlist.selectedvalue”放入区域{这里我将从下拉列表中获取所选值。 }
我希望你们理解我的想法和问题。
答案 0 :(得分:1)
我不确定你为什么要加入你的linq声明。如果Linq已经知道对象之间的关系,那就没有必要了,因为在数据库中设置了外键关系。
你可以做的是:
var Metedata = db.Metadatas;
switch(Dropdownlist.selectedvalue)
{
case "one":
Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue));
break;
case "two":
Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue));
break;
//More use cases
}
我不确定当你完成后你将从列表中选择什么,但是如果它涉及相关对象(例如Multimedias),那么你可能想要查看DataLoadOptions(LinqToSQL)或.Include()(EntityFrameworks)
答案 1 :(得分:0)
只需更改您的SQL查询:
if(supportgrp.SelectedItem.Text ==“All”)
sql =“SELECT * FROM QlyData where Date> ='”+ txtstartdate.Text +“'and Date< ='”+ txtenddate.Text +“'”;
否则
sql =“SELECT * FROM QlyData where Date> ='”+ txtstartdate.Text +“'and Date< ='”+ txtenddate.Text +“'and suppgrp ='”+ supportgrp.Text +“'” ;