由于需要,我在c#中序列化了一个list实体为DATATable传入存储过程作为临时表查询,记录一下
序列化datatable
var data = eccPreSellsService.GetPreSells(deliverSiteId, shopCateId, keyword).Select(x => new pretable
{
ID = x.id,
starttime = x.GetStartDate(),
endtime = Convert.ToDateTime(x.GetCutDate()).ToString(“yyyy-MM-dd”) + " " + " 23:59:59"
}).ToList();
ar table = DataTableHelper.ConvertTo(data);
var sqlParams = new SqlParameter[]
{
new SqlParameter("@start", start),
new SqlParameter("@limit", length),
new SqlParameter("@tp1", SqlDbType.Structured) { Value = table, TypeName = “XTableType” }
};
var list = OrderService.SqlQuery(“Stats_PresellSummary @start, @limit,@tp1”, sqlParams).ToList();
数据库中操作
建立类型
create type XTableType as table(ID int,starttime DATETIME,endtime DATETIME);
建立存储过程
ALTER PROCEDURE Stats_PresellSummary
(
@start INT,
@limit INT,
@tp1 XTableType readonly
)