C# LINQ到XML、ORM或其他什么;完全不同;?
我正在进行一个Silverlight项目,其中包含了所有的特性和限制。这是对以前产品的更新。为了快速上市,其目的是尽可能多地维护后端(Web服务、数据库等)。我们的任务是只有在没有其他方法的情况下才接触后端。我们将主要集中于重新编写前端。不久将有一个重要的行业会议,我们将在会上演示产品的早期外观。在正式发布之前可能会有时间进行一些重新工作,但后端可能需要等到V2 好的,所以我要做的是对我负责的前端使用带有数据绑定的MVVM模式(MVVM模式由上面指定)。我有一个预先存在的web服务,它提供一些XML。该XML的示例如下所示:C# LINQ到XML、ORM或其他什么;完全不同;?,c#,linq,silverlight,orm,C#,Linq,Silverlight,Orm,我正在进行一个Silverlight项目,其中包含了所有的特性和限制。这是对以前产品的更新。为了快速上市,其目的是尽可能多地维护后端(Web服务、数据库等)。我们的任务是只有在没有其他方法的情况下才接触后端。我们将主要集中于重新编写前端。不久将有一个重要的行业会议,我们将在会上演示产品的早期外观。在正式发布之前可能会有时间进行一些重新工作,但后端可能需要等到V2 好的,所以我要做的是对我负责的前端使用带有数据绑定的MVVM模式(MVVM模式由上面指定)。我有一个预先存在的web服务,它提供一些X
<CODEBOOKINDEX>
<ME Words="1" Score="25" Highscore="1">Main Entry Item
<NM>attack</NM>
<NM>cardiac</NM>
<NM>chest</NM>
<NM>effort</NM>
<NM>heart</NM>
<NM>pectoris</NM>
<NM>syndrome</NM>
<NM>vasomotor</NM>
<IE>413.9</IE>
<M1 Words="1" Score="25">An M1 Item (Same as ME, just first level Child)
<IE>557.1</IE>
</M1>
<M1 Words="1" Score="25">Another M1 Item
<IE>443.9</IE>
<M2 Words="1" Score="25">An M2 Item (again same as ME, just a child of an M1 item)
<CF>Arteriosclerosis,extremities</CF>
<IE>440.20</IE>
</M2>
</M1>
</ME></CODEBOOKINDEX>
主要条目
攻击
心脏的
胸部
努力
心
胸肌
综合征
血管舒缩
413.9
M1项(与我相同,仅为一级子项)
557.1
另一个M1项目
443.9
M2项目(与我相同,只是M1项目的子项目)
四肢动脉硬化
440.20
所以,我的问题是,因为我想使用MVVM模式将其绑定到UI,所以在我看来,我需要将其转换为自定义对象。正如您可以看到的,有许多“条目”项,MainEntry(ME)和子条目(在本例中为M1或M2),它们都将包含某些其他节点(例如,它们都将有一个IE节点),它们可能包含0个或多个其他节点类型(例如,它们可能包含或不包含一个或多个NM节点,或者它们可能包含或不包含一个CF节点)。这意味着(至少对我来说)我不能直接绑定到XML,因为:
我刚刚确定了我将在UI中使用哪些控件,我需要尽快向我的经理演示我将如何处理翻译 因此,真正的问题是:
把它做完
谢谢你,大卫。这有助于我了解LINQtoXML将如何完成这项任务,这意味着我仍然需要加快进度,但它似乎具备了我所需要的功能,因此我将花有限的时间朝着这个方向前进。
public CustomClass TranslateME(XElement source)
{
CustomClass result = new CustomClass();
result.Words = (int) source.Attribute("Words");
result.Score = (int) source.Attribute("Score");
XAttribute highScore = source.Attribute("HighScore");
result.HighScore = (highScore == null) ? 0 : (int) highScore;
result.NMs = source
.Elements("NM")
.Select(x => x.Value)
.ToList();
result.IE = source
.Element("IE").Value;
result.SubEntries = source
.Elements("M1")
.Select(x => TranslateM1(x))
.ToList();
return result;
}