我使用Linq对我的XML文件执行查询,当我从XML文档解析并获取数据时,我需要反对数据库来填充对象的2个属性。我可以执行2次调用,因为我的snipet显示,但我只想进行一次调用并获得结果以填充2个属性
XDocument recentOrdersXDoc = GetResults(...);
var q = from c in recentOrdersXDoc.Descendants("prop")
let handle = c.Element("handle")
select new ReturnResult()
{
ClientTemplateID = (string)c.Element("TemplateID"),
Handle = resultref != null ? (string)resultref.Attribute("handle") : null,
ClientID = DataContext.GetClientID((string)c.Element("TemplateID")),
ClientName = DataContext.GetClientName((string)c.Element("TemplateID")),
};
要填充ClientID和ModifiedDate,我需要进行2次调用。有一个名为Clients的表,它有两列ClientID和ClientName。当我需要将其作为GetClientID和GetClientName中的参数传递时,我也可以访问ClientTemplateID属性,如上面的代码中我必须从XDocument中获取结果。
答案 0 :(得分:2)
如下:
var q = from c in recentOrdersXDoc.Descendants("prop")
let handle = c.Element("handle")
let clientTemplateID = (string)c.Element("TemplateID")
let client = DataContext.Clients
.Where(x=>x.ClientTemplateID == clientTemplateID)
.Select(x=>new {x.ClientID, x.ClientName}).Single()
select new ReturnResult()
{
ClientTemplateID = clientTemplateID,
Handle = resultref != null ?
(string)resultref.Attribute("handle") : null,
ClientID = client.ClientID,
ClientName = client.ClientName
};
这仍然只读取你需要的两列(我不得不对名称做一些假设)。