c# - Entity Framework SQL 语句

标签 c# asp.net entity-framework

我想从名为 StiriDB 的数据库中查询表 News。我想要在 SearchTxt 中获取 Description 字段中包含单词 Stored 的所有条目。我不太清楚 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;
}

其他详细信息:GetProducts 由 ListView 调用。 SearchTxtRequestQueryString 一起获取,因为它是 URL 属性。许多 if 用于根据特定条件按升序和降序对数据进行排序(if 起作用,我只需要 SqlQuery 按预期工作);

最佳答案

使用 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;
}

关于c# - Entity Framework SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561681/

相关文章:

c# - 如何使 FluentValidation 忽略一个属性

c# - 使用多个源表时如何重用 'Where' 的 linq 表达式

asp.net - 我如何读取这个 JSON 字符串?

c# - 在 ASP.NET Web Config 中加密连接字符串

c# - .NET LINQ to Entities 泛型类型的基础 where 子句

c# - Entity Framework : Adding object with foreign key

c# - 如何将值从子窗体传递到父窗体?

c# - 将 IsClosedTypeOf 从 autofac 转换为 simple.injector

asp.net - 如果未传递参数,如何避免vb.net中的请求查询字符串异常

sql-server - ASP.NET Core/Entity Framework - 使用多对多关系时,HTTP Post 不会在联接表中创建实体