English 中文(简体)
手工操作XML部分(C#,XDocument)
原标题:Manually iterating over a selection of XML elements (C#, XDocument)

在我的XDocument中,在一套XElements上,人工回收的“最佳做法”是什么? 因此,我选择了一整套内容:

var elems = from XElement el in m_xDoc.Descendants()
            where (el.Name.LocalName.ToString() == "q_a") 
            select el;

I can use an IEnumerator to iterate over them, i.e., IEnumerator m_iter;

但是,当我即将结束的时候,如果我叫Reset(Reset)的话,我想从一开始就结束发言,那就投了一种不支持的观念。 这是因为,正如Microsoft C# 2.0规格第22章“Iterators”所述,“说明,点名物体不支持计算器。 重整方法。 援引这种方法会造成一种制度。 不支持被扔进

因此,这样做的正确途径是什么? 如果我也想有双向循环,即“背”纽芬兰,那么什么呢?

微软讨论论坛的一位成员说,我不应直接使用电子计算方法。 他说,有办法去做我想要的,但我不知道什么。 另有一些人建议,将XElements放在我认为行之有效的ToList(ToList)(但我确信这是“最佳做法”。 事先感谢任何建议!

最佳回答

解决办法非常简单。 仅从您的XElements收集中编制一份清单。

var elems = (from XElement el in m_xDoc.Descendants()
            where (el.Name.LocalName.ToString() == "q_a") 
            select el).ToList();

您可以通过索引员elems[i]进行统计,然后跳出。 仅将现行指数储存在一个变量中,并在纽扣地上加以减缩/增减(包装)。

页: 1 即使支持<代码>。 Reset(,它必须每次重新加以分类。 请打电话<代码>。 ToList<T> () 它一劳永逸地把所有后代人捆绑在一起,并将他们装入记忆中。

问题回答

仅使用<条码>,<条码>。 这里它两次:

// first time
foreach(var item in elems) {...}
// second time
foreach(var item in elems) {...}

无需<代码>Reset(>——它只是为了你<>/em>而使用<>GetE amountator(>两次<>,这是这样做的正确方式。 如果你出于任何原因两次提出询问,或想要随机接触,而不是按顺序进行,那么,你必须加以缓冲,也许要把它列入<代码>的ToList()。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签