1

我找到了指向IQueryable的链接 DataSet

但正如我实施的那样:

 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(); 这条线不正确

4

1 回答 1

0

看起来您正试图将 TSQL 命令中的数据获取到 type 对象的实例中ORDREDataSetandDataAdapter似乎只是处理命令和结果的机制;如果是这种情况,那么它纯粹是开销并且没有帮助。我想知道“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>外观中)。

于 2013-11-13T14:30:35.077 回答