C# 为什么使用DB生成的代码得到空结果?

C# 为什么使用DB生成的代码得到空结果?,c#,sql-server,sql-server-2005,C#,Sql Server,Sql Server 2005,我正在使用SQLServer2005。我有一个表scores,有6行和6列-name、scores和id 我用VS添加了数据源,它生成了一个名为testDataSet的数据集 因此,我尝试了以下代码,结果为零: testDataSet db = new testDataSet(); var result = from row in db.scores select row.name; 问题出在哪里?只是查询结果的结构化容器,它与数据源(数据库)没有连接。为了用数据填

我正在使用SQLServer2005。我有一个表
scores
,有6行和6列-
name、scores
id

我用VS添加了数据源,它生成了一个名为
testDataSet
的数据集

因此,我尝试了以下代码,结果为零:

testDataSet db = new testDataSet();

var result = from row in db.scores
             select row.name;
问题出在哪里?

只是查询结果的结构化容器,它与数据源(数据库)没有连接。为了用数据填充数据集,您需要将a与a一起使用并调用该方法


您应该像这样查询数据表:

DataTable products = ds.Tables["Product"];

var query = products.AsEnumerable().
Select(product => new
{
    ProductName = product.Field<string>("Name"),
    ProductNumber = product.Field<string>("ProductNumber"),
    Price = product.Field<decimal>("ListPrice")
});
DataTable products=ds.Tables[“Product”];
var query=products.AsEnumerable()。
选择(产品=>new
{
ProductName=product.Field(“名称”),
ProductNumber=产品字段(“ProductNumber”),
价格=产品字段(“标价”)
});

您遇到的问题是您正在查询一个空的
数据集

首先必须创建到
testDataSet
的连接,并用数据库中的数据填充其中包含的表

如果您使用VS提供的自动化工具创建了
testDataSet
,那么该工具还将创建相关的
TableDataAdapters
(在它们自己的命名空间中)来填充和更新您的
数据集

初始化相关的
TableDataAdapter
,并使用
Fill(db)
方法从数据库中获取数据。

请尝试以下代码:

scoresTableAdapter adapter = new scoresTableAdapter();
var result = from row in adapter.GetData() select row.name;

其他人是对的,你的问题是你没有查询数据。生成数据集时,还会为您生成一个适配器,它将帮助您查询如上所示的数据。

我认为他使用的是LINQ to SQL,testDataSet根本不是一个数据集,而是LINQ to SQL上下文。这一点在他的示例的db.scores部分得到了证实,其中scores是表名。@zespri:不一定。使用VS自动工具创建的强类型
数据集
还将包含一个
数据表
属性分数,您可以以类似的方式查询该分数。我不确定,我想我是…在这种情况下,您能否解释一下,您是如何在Visual Studio中生成名为testDataSet的数据集的?你说的“我添加了数据源”到底是什么意思。你在哪里添加的?数据->添加新数据源->数据库->数据集…你怎么知道结果是零?但这不会把所有的数据库都放到我的计算机内存中吗?是的,但你可以配置
TableDataAdapter的
默认
SelectCommand
(或者根据你的喜好添加其他查询)使用
WHERE
子句和必要的
参数来限制查询范围。也许您还应该研究一下
linqtosql
,在这里您可以直接使用
LINQ
以您希望的方式查询
数据库上下文。
scoresTableAdapter adapter = new scoresTableAdapter();
var result = from row in adapter.GetData() select row.name;