- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前遇到一个问题,我从以下方法中得到了 NullReferenceException:
public void LoadValueXML()
{
XDocument myxml = XDocument.Load(@"config.xml");
Items = myxml.Element("Values").Elements("Item").OrderBy(x => x.Attribute("ID"));
ItemsLength = Items.Count();
}
我尝试设置 Items 变量的方法中的第四行生成了异常。我的 XML 文档的格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<Values>
<Item ID="1" Type="Command" Value="330MV,60HZ"/>
<Item ID="2" Type="Command" Value="600MV,13KHZ"/>
<Item ID="3" Type="Command" Value="3.3V,60HZ"/>
<Item ID="4" Type="Notification" Value="Look At This!!!" />
</Values>
我似乎找不到问题所在。看起来一切都很好地加载到 XDocument 中。在调试器中,它显示 XDocument 不为空,但是当我尝试设置 Items 时,它仍然会抛出异常。在此先感谢您为解决此问题提供的任何帮助。
附带说明:尝试使用 XDocument.Parse() 而不是 XDocument.Load() 会返回 "Data at the root level is invalid. Line 1, position 1."
异常。
编辑:
在遵循 cdhowie 的建议后,我当前的方法如下所示:
public void LoadValueXML()
{
XDocument myxml = XDocument.Load(@"config.xml");
var values = myxml.Element("Values");
var items = values.Elements("Item");
Items = items.OrderBy(x => x.Attribute("ID"));
ItemsLength = Items.Count();
}
values
为空,项目返回“枚举未产生任何结果”。它不再抛出异常,但仍然无法正常工作。
编辑 2:
遵循 Jeyaram J 的建议的新方法:
public void LoadValueXML()
{
XDocument myxml = XDocument.Load(@"config.xml");
var items = myxml.Root.Elements("Item");
Items = items.OrderBy(x => x.Attribute("ID"));
ItemsLength = Items.Count();
}
它部分起作用但抛出“至少一个对象必须实现 IComparable”。异常。
最佳答案
尝试使用 Root 而不是 Element。
public void LoadValueXML()
{
XDocument myxml = XDocument.Load("config.xml");
Items = myxml.Root.Elements("Item").OrderBy(x => (int)x.Attribute("ID"));
ItemsLength = Items.Count();
}
如果不行请告诉我
关于c# - IOrderedEnumerable<XElement> 返回 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617831/
我喜欢防御性编程。 我讨厌异常抛出,但这不是我的问题的主题。 我对 linQ 进行了扩展,以便能够使用列名执行订单 public static IEnumerable OrderBy(
是否应该将 IOrderedEnumerable 用作纯粹用于语义值的返回类型? 例如,在表示层消费模型时,我们如何知道集合是需要排序还是已经排序? 如果存储库使用 ORDER BY 子句包装存储过程
我这样排序字典: var sortedListOfNodes = _nodeDictionary.Values.OrderBy((n) => n.Time); 然后我选择了一个元素: var sele
我有一个 IOrderedEnumerable> (IGrouping 中的值与问题无关,因此用 var 抽象)。我有一个 List包含用作 IGrouping 键的字符串.我希望能够重新订购 IOr
在 C# 中,使用 Select() 投影 IOrderedEnumerable 的元素是否会保留元素顺序? 如果是这样,它为什么会返回一个IEnumerable,而不是一个IOrderedEnume
我想实现一些不同的算法来练习,只是为了看看我到底有多糟糕,然后变得更好:p 无论如何,我想我会尝试使用 IEnumerable和 IOrderedEnumerable和其他 .Net 集合类型只是为了
是否可以返回 IOrderedEnumerable来自不使用 OrderBy 的方法或 OrderByDescending IEnumerable 上的方法? 我猜也许不是……但是……也许我错了? 原
我想做的,简短的版本: var source = new[]{2,4,6,1,9}.OrderBy(x=>x); int count = source.Count; // source) {
有谁知道 LINQ 库(或公开可用的实用程序库)中是否有任何内置功能可用于 IOrderedEnumerable 上的优化操作,而不是 IEnumerable ? 例如,理论上,Contains()当
调用 AsQueryable()在 IOrderedEnumerable 上在 IEnumerable 上调用扩展方法并返回 IQueryable而不是 IOrderedQueryable . 这对我
我已经简化了这个问题。我有一个有序的 IEnumerable,我想知道为什么应用 where 过滤器可以取消对象的顺序 这不会编译,但它应该有潜力 IOrderedEnumerable tmp = n
我想在插入我的数据库之前对一些随机整数的顺序进行排序。 if (integerList.Direction.Equals("ascending")) { integerList.Integer
我目前遇到一个问题,我从以下方法中得到了 NullReferenceException: public void LoadValueXML() { XDocument
这个问题在这里已经有了答案: Is it possible to turn an IEnumerable into an IOrderedEnumerable without using Order
我想了解 ThenBy 在 .Net 中的工作原理。 (我知道怎么用,就是不明白微软是怎么实现的!) 根据文档,string_list.OrderBy(Function (x) x.length).T
string[] fruits = { "grape", "passionfruit", "banana", "mango", "orange",
我是这样写的: using System;using System.Linq; static class MyExtensions { public static IEnumerable In
如果你去这里:The IOrderedEnumerableDocs然后单击 .Contains() 方法,然后它会将您带到此处:the generalised Enumerable.Contains(
假设我有一个 IEnumerable 日期,我想获取一个范围内的日期。 Linq 和 IOrderedEnumerable 是否足够智能以实现选择更快算法的能力,因为现在日期已排序。 考虑一下: IO
我在使用以下代码时遇到了意想不到的问题。 List items = new List(); items = items.OrderBy(item => item); 此代码产生错误: Cannot i
我是一名优秀的程序员,十分优秀!