我有这个简单的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Entity;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
NuLabsEntities db = new NuLabsEntities();
IEnumerable<company> companies = from cmp in db.company select cmp;
foreach (var row in companies)
{
Console.WriteLine(companies);
Console.ReadLine();
}
}
}
}
字符串
我知道这是一个基本的问题:我正在学习c#
但我不明白为什么,在使用ado.net创建edmx文件并尝试运行此简单代码后,它返回以下查询,而不是公司表的行列表的结果:
SELECT
[Extent1].[companyId] AS [companyId],
[Extent1].[labirintoCodiceCliente] AS [labirintoCodiceCliente],
[Extent1].[labirintoCodiceAteco2007] AS [labirintoCodiceAteco2007],
[Extent1].[name] AS [name],
[Extent1].[doc] AS [doc],
[Extent1].[notes] AS [notes],
[Extent1].[vatNumber] AS [vatNumber],
[Extent1].[taxCode] AS [taxCode],
[Extent1].[LabirintoFornitoreId] AS [LabirintoFornitoreId],
[Extent1].[LabirintoCommercialistaId] AS [LabirintoCommercialistaId],
[Extent1].[LabirintoConsulenteDelLavoroId] AS [LabirintoConsulenteDelLavoroId]
FROM [dbo].[company] AS [Extent1]
型
4条答案
按热度按时间w1jd8yoj1#
为什么
这是因为公司的类型是
System.Data.Entity.Infrastructure.DbQuery<Company>
,它的ToString()
方法返回查询。当你使用
Console.WriteLine(somthings)
时,ToString
方法会被用来输出数据,所以你会收到ToString
结果,也就是查询文本。如何检索值?
要获取字段的值,可以在循环中使用
Console.WriteLine(row.SomeField);
来接收行的SomeField
的值。备注
请记住,
Console.WriteLine(row);
将输出您的公司类的类型,并且输出将是每行的类名。p1iqtdky2#
我认为你应该传递行对象
字符串
6za6bjd03#
您正在打印查询本身,因为
companies
包含查询。您要做的是,运行查询(foreach就可以),然后遍历结果集(您已经在这样做了),并为结果集中的每一行打印您想要的详细信息,如
字符串
ergxz8rk4#
Console.WriteLine(companies);
应为Console.WriteLine(row.blah);
1.您需要调用
.ToList()
,然后在集合中循环。当您调用ToList()
时,查询将被计算。使用您编码的
foreach
,您可以将每个company
放入行中。您可以从row
访问company
的属性。假设你的公司结构是这样的
字符串
你的代码应该是
型