Набор данных в IQueryable<T>

Я нашел ссылку DataSet на 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 ответ

Похоже, вы пытаетесь получить данные из команды TSQL в экземпляры объекта типа ORDRE, DataSet а также DataAdapter кажется, просто механизм для обработки команды и результатов; если это так, то это чисто накладные расходы и не помогает. Интересно, может ли "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> фасад).

Другие вопросы по тегам