如何从 LINQ 中运行 SQL 语句






1.82/5 (6投票s)
一篇关于如何从 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 日:初始发布