我想从linq创建一个匿名类型.然后手动更改单个属性(status)的值,并将列表作为数据源提供给转发器.但是不要让我这样做因为它是只读的.有什么建议吗?
var list = from c in db.Mesai join s in db.MesaiTip on c.mesaiTipID equals s.ID where c.iseAlimID == iseAlimID select new { tarih = c.mesaiTarih, mesaiTip = s.ad, mesaiBaslangic = c.mesaiBaslangic, mesaiBitis = c.mesaiBitis, sure = c.sure, condition = c.onaylandiMi, status = c.status }; foreach (var item in list) { if (item.condition==null) { item.status == "Not Confirmed"; } } rpCalisanMesai.DataSource = list.ToList(); rpCalisanMesai.DataBind();
sloth.. 7
创建列表后,只需设置正确的值,而不是在创建列表后尝试更改值.
var list = from c in db.Mesai join s in db.MesaiTip on c.mesaiTipID equals s.ID where c.iseAlimID == iseAlimID select new { tarih = c.mesaiTarih, mesaiTip = s.ad, mesaiBaslangic = c.mesaiBaslangic, mesaiBitis = c.mesaiBitis, sure = c.sure, condition = c.onaylandiMi, status = c.onaylandiMi != null ? c.status : "Not Confirmed" };
此外,如果您可以更改属性,您的问题将是执行两次查询:首先在foreach
-loop中,然后再次调用list.ToList()
(这将创建匿名类型的新实例).
创建列表后,只需设置正确的值,而不是在创建列表后尝试更改值.
var list = from c in db.Mesai join s in db.MesaiTip on c.mesaiTipID equals s.ID where c.iseAlimID == iseAlimID select new { tarih = c.mesaiTarih, mesaiTip = s.ad, mesaiBaslangic = c.mesaiBaslangic, mesaiBitis = c.mesaiBitis, sure = c.sure, condition = c.onaylandiMi, status = c.onaylandiMi != null ? c.status : "Not Confirmed" };
此外,如果您可以更改属性,您的问题将是执行两次查询:首先在foreach
-loop中,然后再次调用list.ToList()
(这将创建匿名类型的新实例).