求助,linq简化

yj258213056 2013-12-13 11:37:51
哪位大哥帮忙看看下面的代码怎么简化,关键是这句

XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID))

怎么能只查询一次呢?

var data = sendDetails.Select(m => new
{
CheltemName = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.ChineseName,
ProductSpec = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).SupplierProductSpe,
RFID = m.RFID,
CabinetCode = m.CabinetSendDataInfo.CabinetCode,
DangerousLevel = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.DangerousLevel,
InTime = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).InTime,
Remark = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).Remark
});
return data.ToList();
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2013-12-13
  • 打赏
  • 举报
回复
Any questions about LINQ, please ask questions here: http://bbs.csdn.net/forums/LINQ
q107770540 2013-12-13
  • 打赏
  • 举报
回复
here we go:
var data= from m in sendDetails
          let x=XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID))
          select new 
          {
               CheltemName = x.ChineseName,
                    ProductSpec = x.SupplierProductSpe,
                    RFID = m.RFID,
                    CabinetCode = m.CabinetSendDataInfo.CabinetCode,
                    DangerousLevel = x.CheltemBaseInfo.DangerousLevel,
                    InTime = x.InTime,
                    Remark = x.Remark
          }

  return data.ToList();
t101lian 2013-12-13
  • 打赏
  • 举报
回复
引用 楼主 yj258213056 的回复:
哪位大哥帮忙看看下面的代码怎么简化,关键是这句

XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID))
怎么能只查询一次呢?

var data = sendDetails.Select(m => new
                {
                    CheltemName = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.ChineseName,
                    ProductSpec = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).SupplierProductSpe,
                    RFID = m.RFID,
                    CabinetCode = m.CabinetSendDataInfo.CabinetCode,
                    DangerousLevel = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.DangerousLevel,
                    InTime = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).InTime,
                    Remark = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).Remark
                });
                return data.ToList();
C++ ? ,,不好意思,,看错了, 不懂
t101lian 2013-12-13
  • 打赏
  • 举报
回复
  var result = from a in AinfoList
                         join m in MinfoList on a.AID equals m.HangListid
                         join sa in AinfoSellLsit on m.OrderFormId equals sa.ASID
                         join u in UinfoList on m.BeatedUserID equals u.UserId
                         join b in BinfoList on a.UserName equals b.IDcard
                         select new
                         {
                             ID = DateTime.Now.ToString("yyyyMMdd") + "0000" + m.ID + m.Num,
                             GoodName = DateTime.Now.ToString("yyyyMMdd") + a.AName,
                             UserName = b.UserName,
                             B_Phone = b.Phone,
                             B_Bail = 2000,
                             u.NickName,
                             U_Phone = u.Phone,
                             U_Bail = m.Bail,
                             m.BuyAddress,
                             m.Num,
                             IDQ = m.ID
                         };


            this.gv.DataSource = result;
看起来你那比我这里复杂多啦
t101lian 2013-12-13
  • 打赏
  • 举报
回复
也碰到类似的问题,,还没解决。。 友情帮顶吧
yj258213056 2013-12-13
  • 打赏
  • 举报
回复
人工置顶,难道都去吃饭了么
yj258213056 2013-12-13
  • 打赏
  • 举报
回复
引用 5 楼 q107770540 的回复:
here we go:
var data= from m in sendDetails
          let x=XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID))
          select new 
          {
               CheltemName = x.ChineseName,
                    ProductSpec = x.SupplierProductSpe,
                    RFID = m.RFID,
                    CabinetCode = m.CabinetSendDataInfo.CabinetCode,
                    DangerousLevel = x.CheltemBaseInfo.DangerousLevel,
                    InTime = x.InTime,
                    Remark = x.Remark
          }

  return data.ToList();
非常感谢,嘿嘿. 原来还有个linq专区啊..
yj258213056 2013-12-13
  • 打赏
  • 举报
回复
引用 4 楼 t101lian 的回复:
[quote=引用 楼主 yj258213056 的回复:] 哪位大哥帮忙看看下面的代码怎么简化,关键是这句

XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID))
怎么能只查询一次呢?

var data = sendDetails.Select(m => new
                {
                    CheltemName = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.ChineseName,
                    ProductSpec = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).SupplierProductSpe,
                    RFID = m.RFID,
                    CabinetCode = m.CabinetSendDataInfo.CabinetCode,
                    DangerousLevel = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).CheltemBaseInfo.DangerousLevel,
                    InTime = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).InTime,
                    Remark = XpoSession.FindObject<CheltemInInfo>(CriteriaOperator.Parse("RFID=?", m.RFID)).Remark
                });
                return data.ToList();
C++ ? ,,不好意思,,看错了, 不懂[/quote] C#

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧