我用Linq编写了一个查询,在我的代码的一部分中,我尝试将字符串分配给XML,但发生了错误:
无法将类型'string'隐式转换为'System.Xml.Linq.XElement'
这是我的代码:
public int Save(Route route)
{
aspnetdbDataContext aspdb = new aspnetdbDataContext();
RouteLinq rtlq=new RouteLinq();
rtlq.UserId = route.UserId;
rtlq.SourceName = route.Name;
//I have an error hier
rtlq.GpxData = route.GpxData;
//---------------------------
rtlq.CreationTime = route.Time;
aspdb.RouteLinqs.InsertOnSubmit(rtlq);
aspdb.SubmitChanges();
}
如何解决我的问题?
答案 0 :(得分:2)
由于GpxData在数据库中的类型为XML,因此无法直接为其指定字符串,您需要创建一个en XElement,然后为其赋值:
rtlq.GpxData = new XElement(route.GpxData);
route.GpxData
的类型为字符串
答案 1 :(得分:1)
如果你有一个XElement,你可以得到这样的文本内容:
string content = someXElement.Value
如果您需要完整节点,则需要使用XElement.ToString()
。
更新:在您最近的编辑之后,您会更清楚地想要一个新的XElement:
rtlq.GpxData = new XElement("GpxData", route.GpxData);
第一个参数是节点的名称,第二个参数是内容。如果route.GpxData
已包含Xml字符串,您还可以使用XElement.Parse(route.GpxData)