数据集到IQueryable <t> </t>

时间:2013-11-13 14:23:17

标签: c# dataset iqueryable

我找到了链接 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已(); 这条线不正确

1 个答案:

答案 0 :(得分:0)

看起来就像你试图将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<T>方法来自“dapper”并证明命令和结果具有功能性; new {...}提供参数。 ToList()将结果重复为List<ORDRE>。这里使用IQueryable<T>没有任何好处,因为数据不可组合;但是,如果调用者理解这一点,他们可以根据需要对结果使用.AsQueryable()。但它仍然是LINQ-to-Objects从根本上(只包含在IQuerayble<T>外观中)。