我还是LINQ的新手。是否可以执行以下操作:
例如,我有一堂课:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
现在,我想通过读取(例如)xml文件的内容并将其返回来将其作为类对象返回。
所以如果我读了这个
xml文件:
<person>
<firstname></firstname>
<lastname></lastname>
</person>
阅读人(例如,这属于“人”类):
public static Person ReadPerson(xmlpath)
{
XDocument xd = XDocument.Load(xmlpath);
var person = (from p in xd.Descendants("person")
select new Person
{
FirstName = p.Element("firstname").value,
LastName = p.Element("lastname").value
});
return person as Person;
}
现在,如果我在其他地方执行以下操作:
Person p = new Person();
p = People.Person(xmlpath);
Response.Write(p.FirstName);
在这里,p.FirstName返回一个空异常。我了解的原因是因为linq查询返回了一个空类。
所以我的问题是,有没有直接在查询中的类中添加内容并返回它而又没有运行foreach循环并手动添加所有内容的情况? (如下所示:)
Person p = new Person();
foreach (var x in person)
{
p.FirstName = x.FirstName;
p.LastName = x.LastName;
}
抱歉,这是一个愚蠢的问题。
谢谢
参考方案
您需要区分阅读一系列项目和阅读单个项目。当前,person
中的ReadPerson
变量实际上是IEnumerable<Person>
类型-您返回的person as Person
将为空,因为该序列实际上不是Person
的实例。如果使用强制转换而不是as
,则您会更早看到-但是必须对类型做任何事情的事实应该是警告,您未完全正确。
我怀疑您实际上想要这样:
public static IEnumerable<Person> ReadPeople(xmlpath)
{
XDocument xd = XDocument.Load(xmlpath);
return from p in xd.Descendants("person")
select new Person
{
FirstName = p.Element("firstname").value,
LastName = p.Element("lastname").value
});
}
或这个:
public static Person ReadPerson(xmlpath)
{
XDocument xd = XDocument.Load(xmlpath);
XElement element = xd.Descendants("person").First();
return new Person
{
FirstName = element.Element("firstname").value,
LastName = element.Element("lastname").value
});
}
如果没有person
元素或多人元素,则还应考虑要发生的情况。 First
,FirstOrDefault
,Single
和SingleOrDefault
方法在这里对您有用。
我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
LINQ to XML语法 - c#我有一个简单的POCO类,用于保存从XML文件提取的数据,该XML文件定义如下:public class Demographics { public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; …
改造正在返回一个空的响应主体 - java我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…
每个文件合并后添加换行 - python我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…
Json到php,json_decode返回NULL - php我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…