[英]linq to generic list C#
我从数据库下面获取XML:
<Users>
<User>
<USRID>1234</USRID>
<USERNAME>ABCD</USERNAME>
<ROLES>
<ROLE>
<ROLEID>1</ROLEID>
<ROLENAME>GlobalAdministrator</ROLENAME>
<ISDEFAULTROLE>1</ISDEFAULTROLE>
</ROLE>
<ROLE>
<ROLEID>2</ROLEID>
<ROLENAME>Administrator</ROLENAME>
<ISDEFAULTROLE>0</ISDEFAULTROLE>
</ROLE>
</ROLES>
</User>
<User>
<USRID>2312</USRID>
<USERNAME>XUX</USERNAME>
<ROLES>
<ROLE>
<ROLEID>3</ROLEID>
<ROLENAME>AccountManager</ROLENAME>
<ISDEFAULTROLE>1</ISDEFAULTROLE>
</ROLE>
<ROLE>
<ROLEID>5</ROLEID>
<ROLENAME>Approver</ROLENAME>
<ISDEFAULTROLE>0</ISDEFAULTROLE>
</ROLE>
</ROLES>
</User>
</Users>
这是我用来填充XML的类结构:
public class Role
{
public string RoleId
{
get;
set;
}
public string RoleName
{
get;
set;
}
public bool IsDefaultRole
{
get;
set;
}
}
public class User
{
public User()
{
UserRoles = new List<Role>();
}
public string UserId
{
get;
set;
}
public string UserName
{
get;
set;
}
public List<Role> UserRoles
{
get;
set;
}
}
我想使用linq填充“ User”类。 怎么样?
XDocument doc = XDocument.Parse(userXML);
lstUser = (from dem in doc
.Descendants("Users")
.Descendants("User")
select new User
{
UserId = dem.Element("USRID").Value,
UserName = dem.Element("USERNAME").Value,
..............................
}).ToList();
请帮助我完成以上代码。 我必须在.......部分中写什么才能获得角色?
尝试这个...
var lstUser = doc.Descendants("Users").Descendants("User")
.Select(dem => new User
{
UserId = dem.Element("USRID").Value,
UserName = dem.Element("USERNAME").Value,
UserRoles = dem.Descendants("ROLES").Descendants("ROLE")
.Select(x => new Role
{
RoleId = x.Element("ROLEID").Value,
RoleName = x.Element("ROLENAME").Value,
IsDefaultRole = x.Element("ISDEFAULTROLE").Value == "1"
})
.ToList()
}).ToList();
如前所述-使用xml序列化器 。 它的实现不是完美的,但是在大多数情况下都可以。 也可以使用DataMember
属性以及DataContractSerializer和反序列化器来实现相同的目标。
简单:-
List<User> users = xdoc.Root.Descendants("User")
.Select(x => new User
{
UserId = x.Element("USRID").Value,
UserName = x.Element("USERNAME").Value,
UserRoles = x.Descendants("ROLE")
.Select(z => new Role
{
RoleId = z.Element("ROLEID").Value,
RoleName = z.Element("ROLENAME").Value,
IsDefaultRole = z.Element("ISDEFAULTROLE").Value == "1" ? true : false
}).ToList()
}).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.