在Linq表达式中创建XElement项

时间:2010-07-08 10:49:54

标签: xml linq

我正在使用Linq来创建对象列表。下面显示的是我正在使用的表达式。我遇到的问题是,在运行时它对“RawXMLDocument = XElement.Parse(t.Message)”行不满意。 “RawXMLDocument”属性采用XElement。有没有办法将XML的字符串版本(在Message中保存)转换为XElement,如下所示?

var transactionList = (from t in ctx.Transactions
                   where t.MessageRecievedAt >= Start && t.MessageRecievedAt <= End
                   select new TerminalTransactionMessage
                   {
                       DeviceId = t.DeviceId,
                       RawXMLDocument = XElement.Parse(t.Message),
                       TransactionTime = t.EventTime_Local
                   }).ToList();

1 个答案:

答案 0 :(得分:4)

问题是它试图在SQL中执行此操作吗?如果是这样,你需要将SQL中的位和LINQ to Objects中的位分开。试试这个:

var query = from t in ctx.Transactions
            where t.MessageRecievedAt >= Start && t.MessageRecievedAt <= End
            select new
            {
                t.DeviceId,
                t.Message,
                TransactionTime = t.EventTime_Local
            };
var transactionList = query.AsEnumerable() // LINQ to Objects from here
                           .Select(t => new TerminalTransactionMessage 
                                   {
                                      DeviceId = t.DeviceId,
                                      RawXMLDocument = XElement.Parse(t.Message),
                                      TransactionTime = t.TransactionTime
                                   });
                           .ToList();