我正在使用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();
答案 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();