读书人

各位请问怎么写此类的函数?

发布时间: 2013-09-09 20:31:09 作者: rapoo

各位,请教如何写此类的函数??
代码:

var datas = (from D in dbjy.dt_2_jiens
where (D.单位名称 == "办公室")
group D by D.类别 into dGroup
select new {tts=dGroup.Key,conts=dGroup.Count()}).OrderBy(D=>D.tts ) ;

// 开始
List<SelectListItem> xx = new List<SelectListItem>();

if ((datas != null) && (datas.Count() > 0))
{
foreach (var data in datas)
{
xx.Add(new SelectListItem { Text = tts , Value = conts.ToString() });
}
}

// 结束

ViewData["Chart"] = xx ;


return View();

如何将 “开始 ”和“结束”部分之间的代码写成通用的函数,即最后成为如下的效果:
var datas = (from D in dbjy.dt_2_jiens
where (D.单位名称 == "办公室")
group D by D.类别 into dGroup
select new {tts=dGroup.Key,conts=dGroup.Count()}).OrderBy(D=>D.tts ) ;
ViewData["Chart"] = getdata(datas) ;
return View();


就是 如何写此 getdata() 为通用的?谢谢。 EF 通用代码


[解决办法]
嗯,Linq to EF不支持ToString()

只能这么写了:
List<SelectListItem>?getData<T>(IEnumerable<T>?data,?Func<T,?SelectListItem>?selector)?where?T?: class
{
????return?data.Select(selector).ToList();
}

ViewData["Chart"] = getData(datas.AsEnumerable(), x => new SelectListItem { Text = tts, Value = conts.ToString() });

读书人网 >.NET Framework

热点推荐