linq IE浏览器和console.writeline

holgip5t  于 2023-11-14  发布在  其他
关注(0)|答案(4)|浏览(135)

我有这个简单的代码:

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]

w1jd8yoj

w1jd8yoj1#

为什么
这是因为公司的类型是System.Data.Entity.Infrastructure.DbQuery<Company>,它的ToString()方法返回查询。
当你使用Console.WriteLine(somthings)时,ToString方法会被用来输出数据,所以你会收到ToString结果,也就是查询文本。
如何检索值?
要获取字段的值,可以在循环中使用Console.WriteLine(row.SomeField);来接收行的SomeField的值。

备注

请记住,Console.WriteLine(row);将输出您的公司类的类型,并且输出将是每行的类名。

p1iqtdky

p1iqtdky2#

我认为你应该传递行对象

Console.WriteLine(row);

字符串

6za6bjd0

6za6bjd03#

您正在打印查询本身,因为companies包含查询。
您要做的是,运行查询(foreach就可以),然后遍历结果集(您已经在这样做了),并为结果集中的每一行打印您想要的详细信息,如

foreach (var row in companies) //row is each row in result set of query companies
{
    Console.WriteLine(row.SomeProperty); //row, not companies
    Console.WriteLine(row.SomeOtherProperty);
    Console.ReadLine();
 }

字符串

ergxz8rk

ergxz8rk4#

  1. Console.WriteLine(companies);应为Console.WriteLine(row.blah);
    1.您需要调用.ToList(),然后在集合中循环。当您调用ToList()时,查询将被计算。
    使用您编码的foreach,您可以将每个company放入行中。您可以从row访问company的属性。
    假设你的公司结构是这样的
public class company
{
   public int companyId {get;set;}
   public string companyName {get;set;}
}

字符串
你的代码应该是

foreach (var row in companies.ToList())
{
  Console.WriteLine("CompanyId:"+row.CompanyId.ToString());
  Console.WriteLine("CompanyName:"+row.CompanyName);
  Console.ReadLine();
}

相关问题