【问题标题】:dataset to IQueryable<T>数据集到 IQueryable<T>
【发布时间】:2013-11-13 14:23:16
【问题描述】:

我找到了链接 DataSet to IQueryable

但正如我实施的那样:

 public IQueryable<ORDRE> Get_Ordre_ParDate_Iquery(string sql_SelectAll, DateTime dateDeb, DateTime dateFin)
        {
            try
            {
                using (var connectionWrapper = new Connexion())
                {
                    var connectedConnection = connectionWrapper.GetConnected();

                    SqlCommand comm_SelectAll = new SqlCommand(sql_SelectAll, connectionWrapper.conn);

                    comm_SelectAll.Parameters.AddWithValue("@DATE_CREE_DEB", dateDeb);
                    comm_SelectAll.Parameters.AddWithValue("@DATE_CREE_FIN", dateFin);
                    SqlDataAdapter adapt_SelectAll = new SqlDataAdapter();
                    adapt_SelectAll.SelectCommand = comm_SelectAll;
                    DataSet dSet_SelectAll = new DataSet();
                    adapt_SelectAll.Fill(dSet_SelectAll, "LeOrdre");
                    dSet_SelectAll.Dispose();
                    adapt_SelectAll.Dispose();
                    return dSet_SelectAll.Tables["LeOrdre"].AsEnumerable().AsQueryable<ORDRE>();
                }
            }
            catch (Exception excThrown)
            {
                throw new Exception(excThrown.Message);
            }

        }

dSet_SelectAll.Tables["LeOrdre"].AsEnumerable().AsQueryable(); 这行不正确

【问题讨论】:

  • 我们是什么ORDRE,它与这个问题有什么关系?这里的AsEnumerable() - 不就是IEnumerable&lt;DataRow&gt;吗?您是如何设想映射到 ORDRE 的?

标签: c# dataset iqueryable


【解决方案1】:

看起来就像您正试图将数据从 TSQL 命令获取到类型为 ORDRE 的对象的实例中。 DataSetDataAdapter 似乎只是处理命令和结果的机制;如果是这种情况,那么它纯粹是开销并且没有帮助。我想知道"dapper" 在这里是否是一个更简单的选择,即

public List<ORDRE> Get_Ordre_ParDate_Iquery(string sql_SelectAll,
    DateTime dateDeb, DateTime dateFin)
{
    using (var connectionWrapper = new Connexion())
    {
        connectionWrapper.GetConnected();
        return connectionWrapper.conn.Query<ORDRE>(sql_SelectAll,
            new { DATE_CREE_DEB = dateDeb, DATE_CREE_FIN = dateFin }).ToList()
    }
}

这里的Query&lt;T&gt; 方法来自“dapper”并证明了命令和结果的功能; new {...} 提供参数。 ToList() 将结果迭代到 List&lt;ORDRE&gt;。在这里使用IQueryable&lt;T&gt; 没有任何好处,因为该数据不会是可组合的;但是,如果调用者理解这一点,他们可以根据需要在结果上使用.AsQueryable()。但它基本上仍然是 LINQ-to-Objects(只是包装在 IQuerayble&lt;T&gt; 外观中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2020-12-22
    • 2013-09-03
    • 2010-11-16
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多