2012-10-26 24 views
1

我正面临以下问题。我想要一个带有DropDowList的搜索字段,用户可以在其中选择他想要搜索的项目。我必须使用这个LINQ代码而不仅仅是一个SQL查询。将DropDownList值转换为Linq查询,其中子句为

这里是我的代码:

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

你的问题是什么?你永远不会说出来。 – peroija

+0

我想在我所说的地区有我的“dropdownlist.selectedvalue”{这里我会从下拉列表中选择一个值。 } – Haidy

回答

0

只要改变你的SQL查询:

如果(supportgrp.SelectedItem.Text == “全部”)

SQL = “SELECT * FROM QlyData其中日期> ='” + txtstartdate.Text +“ '和日期< ='“+ txtenddate.Text +”'“;

别的

SQL = “SELECT * FROM QlyData其中日期> ='” + txtstartdate.Text + “ '和日期< ='” + txtenddate.Text + “ '和suppgrp ='” + supportgrp。文字+“'”;

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)。

+0

好的谢谢!我想我可以用这个做点什么... – Haidy