如何为linq对象制作一个展平函数(Linq To Entities for mysql)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何为linq对象制作一个展平函数(Linq To Entities for mysql)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2479字,纯文字阅读大概需要4分钟。
内容图文
![如何为linq对象制作一个展平函数(Linq To Entities for mysql)?](/upload/InfoBanner/zyjiaocheng/904/bb50aa7d2b874ef7add5f26df69e7c45.jpg)
我正在升级一个旧程序并使用linq进行基本选择,以便我可以在进程中学习linq.
我有一个重复的任务,只是显示来自各种连接的数据是网格视图,
以下是一个示例
protected void Page_Load(object sender, EventArgs e)
{
using ( vavestockModel.vavestockEntities db = new vavestockModel.vavestockEntities())
{
var prod = (from p in db.products select p);
var prodd = (from p in db.productdetails select p);
var prode = (from p in db.product_extra_data select p);
var join1 = (from p in prod
join
pd in prodd
on p.PrStyle equals pd.StyleCode
select new {pr=p,prd=pd }).ToList();
var join2 = (from p in prod
join
pd in prodd
on p.PrStyle equals pd.StyleCode
select new { p.PrShow,p.PrPrice,pd.I_EAN_51,pd.I_EAN_50 }).ToList();
var join3 = (from p in prod
join
pd in prodd
on p.PrStyle equals pd.StyleCode
select new { flattenmodel(p),flattenmodel(pd) }).ToList();
Response.Write(join1);
GridView1.DataSource = join1;
GridView1.DataBind();
}
}
??object flattenmodel(vavestockModel.vavestockEntities en)//? here i want to pass any table row
{
string[] toren;
//foreach (var item in en.)
//{
//}
return toren;
}
join1可以绑定到gridview而join1不能,因为它们返回实体对象.因为我必须选择所有列重复写入所有名称的列,所以这么多表不是明智的选择,因此我想编写一个返回展平数据的函数.
但我发现很难继续下去.我的困难即将到来,因为在这种情况下我不知道应该返回什么并作为参数传递.有人能指出我正确的方向继续吗?
解决方法:
您可以通过System.Reflection获取对象的所有属性.这里是一个示例,您可以从所有属性获取值并将它们存储在List中,并且可以将此List指定为数据源.
Entities ent = new Entities();
var data = (from x in ent.Employees where x.Id == 1 select x).FirstOrDefault();
List<string> list = ConvertToList(data);
public List<string> ConvertToList(object obj)
{
List<string> list = new List<string>();
PropertyInfo[] pinfo = obj.GetType().GetProperties();
foreach (var info in pinfo)
{
if (info.GetValue(obj) != null)
list.Add(info.GetValue(obj, null).ToString());
}
return list;
}
编辑
您还可以从匿名对象返回DataTable.
public DataTable ConvertToDataTable(IEnumerable<dynamic> obj)
{
DataTable dt = new DataTable();
foreach (dynamic item in obj)
{
DataRow dr = dt.NewRow();
PropertyInfo[] pinfo = item.GetType().GetProperties();
foreach (var info in pinfo)
{
if (!dt.Columns.Contains(info.Name))
dt.Columns.Add(info.Name, info.PropertyType);
var val= info.GetValue(item, null);
dr[info.Name] = val;
}
dt.Rows.Add(dr);
}
return dt;
}
以下是您将如何称呼它
Entities ent = new Entities();
var data = (from x in ent.Employees where x.Id == 1 select x).FirstOrDefault();
DataTable dt=ConvertToDataTable(data);
内容总结
以上是互联网集市为您收集整理的如何为linq对象制作一个展平函数(Linq To Entities for mysql)?全部内容,希望文章能够帮你解决如何为linq对象制作一个展平函数(Linq To Entities for mysql)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。