实体框架SQL语句

时间:2014-10-25 11:04:31

标签: c# asp.net entity-framework

我想从名为News的数据库中查询表StiriDB。在那里,我希望将Description字段中包含StoredSearchTxt字的所有条目。我无法弄明白SqlQuery方法对我的要求......这就是代码:

public IQueryable<News> GetProducts()
{
    var _db = new SiteStiri.Models.NewsContext();
    String SearchTxt = Convert.ToString(Request.QueryString["Cauta"]);
    String queryTxt = "Select * from StiriDB.News where Description like '%" + SearchTxt + "%'";
    IQueryable<News> query = _db.News.SqlQuery<News>(queryTxt);

    if ("DesDate".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderByDescending(u => u.ReleaseDate);
    }

    if ("AsDate".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderBy(u => u.ReleaseDate);
    }

    if ("AsAlp".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderBy(u => u.NewsTitle);
    }

    if ("DesApl".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderByDescending(u => u.NewsTitle);
    }

    return query;
}

其他详细信息:ListView调用GetProductsSearchTxtQueryString Request一起使用,因为它是一个网址属性。许多ifs用于根据某些标准按升序和降序对数据进行排序(ifs工作,我只需要SqlQuery按预期工作);

1 个答案:

答案 0 :(得分:3)

使用Linq to Entities查询,类似于......

public IQueryable<News> GetProducts()
{
    var ctx = new SiteStiri.Models.NewsContext();

    var query = from n in ctx.News
                where n.Description.Contains(SearchTxt)
                select n;

    if ("DesDate".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderByDescending(u => u.ReleaseDate);
    }
    else if ("AsDate".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderBy(u => u.ReleaseDate);
    }
    else if ("AsAlp".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderBy(u => u.NewsTitle);
    }
    else if ("DesApl".Equals(DropDownSelect.SelectedItem.Value))
    {
        query = query.OrderByDescending(u => u.NewsTitle);
    }

    return query;
}
相关问题