我找到了链接 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已(); 这条线不正确
答案 0 :(得分:0)
看起来就像你试图将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>
外观中)。