请问linq 中的ExecuteQuery 执行后返回的结果如何跟gridview的datasource进行绑定 ?

tteagle 2009-03-25 01:26:32
比如:
datagridview.datasource=from d in mydb.table
where d.id.Length<10
select d;

这样是可以绑定的。

datagridview.datasource= mydb.ExecuteQuery<table>(@"select * from table where len(acct_id)<10");
这样是不行的,请问应该怎么做呢?
...全文
1286 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Apenghui919 2011-03-29
  • 打赏
  • 举报
回复
请问下:
IList TSource = ctx.ExecuteQuery<object>(sqlStr).ToList();
我遍历TSource 里面的数据怎么是空的啊!
jixinbin 2010-03-07
  • 打赏
  • 举报
回复
datagridview.datasource= mydb.ExecuteQuery <table>(@"select * from table where len(acct_id) <10");

改为var aa == mydb.ExecuteQuery <table>(@"select * from table where len(acct_id) <10");
datagridview.datasource=aa.ToList<table>();
这样就可以绑定了...
andy_22245 2009-08-17
  • 打赏
  • 举报
回复
tteagle 2009-03-25
  • 打赏
  • 举报
回复
我搞定了,加个bindingSource控件就可以了。
奇怪,第一种就可以了,第二种必须加个bindingSource1控件。
tteagle 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Teng_s2000 的回复:]
我都测试了,可以正确获取数据的呀!!
[/Quote]
我发现用webform是可以的,我现在是用winform,没有gridview控件的,只有datagridview控件,这样写不行啊,麻烦大侠再看看,谢谢。
Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复
你的报什么错!!

LINQ to SQL 将您编写的查询转换成参数化 SQL 查询(以文本形式),然后将它们发送至 SQL 服务器进行处理。

SQL 无法执行在本地可能对您的应用程序可用的各种方法。LINQ to SQL 会设法将这些本地方法转换成在 SQL 环境中可用的等效操作和函数。.NET Framework 内置类型中的大多数方法和运算符都能直接转换成 SQL 命令。有些则可以用可用的函数生成。无法生成的那些方法和运算符会产生运行时异常。有关更多信息,请参见 SQL-CLR 类型映射 (LINQ to SQL)。

如果 LINQ to SQL 查询不足以满足专门任务的需要,您可以使用 ExecuteQuery 方法来执行 SQL 查询,然后将查询的结果直接转换成对象。

示例
在下面的示例中,假定 Customer 类的数据分布在两个表(customer1 和 customer2)中。此查询将返回 Customer 对象的序列。

Visual Basic 复制代码
Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT c1.custID as CustomerID," & _
"c2.custName as ContactName" & _
"FROM customer1 AS c1, customer2 as c2" & _
"WHERE c1.custid = c2.custid")



C# 复制代码
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
FROM customer1 as c1, customer2 as c2
WHERE c1.custid = c2.custid"
);




只要表格结果中的列名与您的实体类的列属性匹配,LINQ to SQL 就会为您创建不在任何 SQL 查询范围之内的对象。

ExecuteQuery 方法也允许带有参数。请使用类似如下内容的代码来执行参数化查询。

Visual Basic 复制代码
Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT contactname FROM customers WHERE city = {0}, 'London'")



C# 复制代码
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
("SELECT contactname FROM customers WHERE city = {0}",
"London");




在查询文本中使用 Console.WriteLine() 和 String.Format() 所用的大括号表示法来表示参数。事实上,实际会对您提供的查询字符串调用 String.Format(),从而将括在大括号内的参数替换为生成的参数名,如 @p0、@p1 … @p(n)。

Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复
我都测试了,可以正确获取数据的呀!!
tteagle 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Teng_s2000 的回复:]
C# code
if (!IsPostBack)
{
DataClassesDataContext con = new DataClassesDataContext();
var q = con.ExecuteQuery<Customers>(@"SELECT * from customers");

GridView1.DataSource = q;
GridView1.DataBind();
}
[/Quote]

这个写法是不行的,跟我的不是一摸一样么
Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复

if (!IsPostBack)
{
DataClassesDataContext con = new DataClassesDataContext();
var q = con.ExecuteQuery<Customers>(@"SELECT * from customers");

GridView1.DataSource = q;
GridView1.DataBind();
}
Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复
ExecuteQuery 有2个参数的啊,你才有一个呢,编译都过不去吧

Teng_s2000 2009-03-25
  • 打赏
  • 举报
回复
帮你看看

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧