我目前正在尝试在MS SQL数据库上运行LINQ查询。这就是我所做的。
在我的代码中,当我需要查询时,这就是我的代码。
MyTableDataSet data = new MyTableDataSet ();
var queryResult =
from c in data.MyTable
select c;
foreach (var date in queryResult)
{
// nothing!
}
我是否在使用LINQ表达式做错了什么?我猜这是'SELECT *'。该表中有数据,大约有50行。也许我需要'填充'数据集?我通过服务器资源管理器使用Windows身份验证来查看数据。如果我可以从那里看到它,那么代码也应该有访问权限?不确定。 :|
感谢您在解决此问题时给予的任何帮助。
答案 0 :(得分:4)
根据您的代码,您正在创建一个新数据集并立即查询它。它当然是空的。
您必须使用在数据集设计器中拖动表时创建的表适配器来填充数据集。
答案 1 :(得分:1)
以下是使用DataTable
:
var queryResult = from c in data.MyTable select c;
DataTable dt = ToDataTable(yourDataContext, queryResult);
foreach (DataRow dr in dt.Rows)
{
// ...
}
dt.Dispose();
ToDataTable
函数为from here:
public DataTable ToDataTable(System.Data.Linq.DataContext ctx, object query)
{
if (query == null)
{
throw new ArgumentNullException("query");
}
IDbCommand cmd = ctx.GetCommand(query as IQueryable);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = (SqlCommand)cmd;
DataTable dt = new DataTable("sd");
try
{
cmd.Connection.Open();
adapter.FillSchema(dt, SchemaType.Source);
adapter.Fill(dt);
}
finally
{
cmd.Connection.Close();
}
return dt;
}