日期:2014-05-20  浏览次数:20702 次

帮忙看看这个简单的LInQ怎么修改!
var query1 =
  from obj in result
  select new
  {
  obj.ID,
  obj.Name,
  objary = obj.GetObjary(),
  keyObjary = (from o in objary
  select new
  {
  o.ID,
  parts = GetParts( o.ID)
  }).ToArray()
  };


private object GetParts( int id)
{
  XXX
}


红色部分有错误,提示“当前上下文中不存在名称objary ,
我可以把obj.GetObjary(),就没有错误了,
可是这么做,导致多调用了obj.GetObjary(),
影响效率,

应该怎么修改呢?

------解决方案--------------------
试试这样:【let的使用】
var query1 =
from obj in result
let jary = obj.GetObjary()
select new
{
obj.ID,
obj.Name,
objary = jary ,
keyObjary = (from o in jary 
select new
{
o.ID,
parts = GetParts( o.ID)
}).ToArray()
};