65.9K
CodeProject 正在变化。 阅读更多。
Home

如何从 LINQ 中运行 SQL 语句

2009年3月30日

CPOL
viewsIcon

51220

一篇关于如何从 LINQ 中运行 SQL 语句的文章。

引言

有时我们需要从 LINQ 运行 SQL 语句。本文将展示如何做到这一点。

Using the Code

首先,您需要在 Visual Studio.NET 2008 中通过“添加新项目”创建 *.dbml 文件,用于映射您的数据库。 如您所知,LINQ 中的查询与 SQL 中的查询不同。 这里我创建了一个名为 GetMember 的方法,其中包含一个 SQL 语句,作为一个 string,我需要从 LINQ 执行它,并返回一个成员列表,以便稍后将其作为数据源传递给网格视图。

我创建此方法是为了通过任何输入的参数以及相互组合来搜索成员。

GeoDataContext MemberConnection = new GeoDataContext(); //connection
public List<Member> GetMemberSearchAll(string name, string fname, string MemberNo,
    string QualificationClass, string WorkClass, string GeoID)
{
    var sql = @"SELECT DISTINCT * FROM dbo.Member where MemberCode <> 0";
    if (name != "")
    {
        sql = sql + " and (dbo.Member.MemberName like '%{0}%')";
    }
    if (fname != "")
    {
        sql = sql + "and (dbo.Member.MemberFameName like '%{1}%')";
    }
    if (MemberNo != "")
    {
        sql = sql + "and (dbo.Member.MemberNo = {2})";
    }
    if (QualificationClass != "")
    {
        sql = sql + " and (dbo.Member.QualificationClass = {3})";
    }
    if (WorkClass != "")
    {
        sql = sql + " and (dbo.Member.WorkClass = {4})";
    }
    if (GeoID != "")
    {
        sql = sql + "and (dbo.Member.GeoID ={5})";
    }
    sql = string.Format(sql, name, fname, MemberNo, 
		QualificationClass, WorkClass, GeoID);
    var quary = MemberConnection.ExecuteQuery<Member>(sql);
    return quary.ToList();
}

这里我首先按照顺序构建 string,包括 SQL 语句和参数,然后我执行从我的连接中调用的 ExecuteQuery 方法,该方法接受一个 SQL 查询作为参数。 其在 Visual Studio 文档中的摘要是“直接在数据库上执行 SQL 查询并返回对象”,然后将格式化的 SQL 传递给它。

感谢,希望这能帮助到某人。

历史

  • 2009 年 3 月 30 日:初始发布 
© . All rights reserved.