我正在尝试使用 LINQ 获取不同值的字典。我试过用这个:
var roleRefList =
xDocument.Root.Descendants()
.Where(x => x.Name.LocalName.Equals("roleRef") &&
!string.IsNullOrEmpty(Convert.ToString(x.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("roleURI")))) &&
!string.IsNullOrEmpty(Convert.ToString(x.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("href")))))
.Select(l => new {
roleUri = l.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("roleURI")).Value,
href = l.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("href")).Value
})
.Distinct()
.ToDictionary(a => a.roleUri);
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当有重复的条目时,roleUri就会发生错误。我正在解析 XML 文档并制作 xElement 属性的字典,roleUri以及roleref它们是否存在于 xElement 中。
另一种解决方法是使用 for 循环:
Dictionary<string, string> roleRefList = new Dictionary<string, string>();
foreach (XElement element in xDocument.Root.Descendants().Where(x => x.Name.LocalName.Equals("roleRef")))
{
string roelUri = Convert.ToString(element.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("roleURI")));
string href = Convert.ToString(element.Attributes().FirstOrDefault(a => a.Name.LocalName.Equals("href"))); …Run Code Online (Sandbox Code Playgroud) 嗨,我想在where子句中设置与给定条件匹配的对象列表中的值.是否可能?其他解决方法是使用where子句获取对象列表,然后使用for或fore循环迭代并更新值.
listOfRequestAssigned.Where(x => x.RequestedNumber == CurrentRequest);
Run Code Online (Sandbox Code Playgroud)
我有列表listOfRequestAssigned对象,并希望更新符合我的搜索条件的对象的一些属性.
class Request
{
bool _requestCompleted;
int _requestedNumber;
public int RequestedNumber
{
get { return _requestedNumber; }
set { _requestedNumber = value; }
}
public bool RequestCompleted
{
get { return _requestCompleted; }
set { _requestCompleted = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
我想更新使用Linq匹配条件的所有对象的RequestCompleted属性