将DropDownList值转换为Linq查询where子句

时间:2012-10-26 11:47:22

标签: asp.net sql database linq

我正面临以下问题。我想要一个带有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”放入区域{这里我将从下拉列表中获取所选值。 }

我希望你们理解我的想法和问题。

2 个答案:

答案 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 +“'” ;