[英]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.