从Linq查询中查询Db - C#

时间:2009-06-25 13:07:30

标签: c# linq

我使用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中获取结果。

1 个答案:

答案 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
        };

这仍然只读取你需要的两列(我不得不对名称做一些假设)。