【问题标题】:LINQ Query Returning No ValueLINQ 查询没有返回值
【发布时间】:2010-11-28 00:21:40
【问题描述】:

我目前正在尝试通过 MS SQL 数据库运行 LINQ 查询。这就是我所做的。

  1. 如果我想通过服务器资源管理器,我可以看到数据库、表和里面的数据。
  2. 我已经从“添加新项目..”自动创建了一个新的数据集。然后,我将表格从服务器资源管理器拖到 DataSet 的设计器视图中。出现正确的表和列标题。我们称之为“MyTableDataSet”。
  3. 在我的代码中,当我需要查询时,这就是我的代码的样子。

     MyTableDataSet data = new MyTableDataSet ();
     var queryResult =
     from c in data.MyTable
        select c;
    
     foreach (var date in queryResult)
     {
        // nothing!
     }
    
  4. 不知道为什么,但在运行查询后通过调试器查看“queryResult”,我得到 - Empty = "Enumeration yielded no results"。

我的 LINQ 表达式有问题吗?我猜那是一个'SELECT *'。该表确实有数据,大约有 50 行。也许我需要“填充”数据集?我正在通过服务器资源管理器使用 Windows 身份验证来查看数据。如果我可以从那里看到它,那么代码也应该可以访问吗?不确定。 :|

感谢你们为解决此问题提供的任何帮助。

【问题讨论】:

    标签: c# visual-studio-2008 linq dataset strongly-typed-dataset


    【解决方案1】:

    根据您的代码,您正在创建一个新数据集并立即对其进行查询。它当然是空的。

    您必须使用在数据集设计器中拖动表格时创建的表格适配器来填充数据集。

    【讨论】:

    • 当然!我现在明白了——我在数据对象下看不到任何 Fill() 或 Update() 方法。谢谢。
    【解决方案2】:

    这是一个使用 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多