小编lok*_*wal的帖子

使用 LINQ 的不同字典

我正在尝试使用 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)

c# xml linq linq-to-xml

4
推荐指数
1
解决办法
6501
查看次数

使用linq设置列表值

嗨,我想在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属性

linq class c#-3.0

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

linq ×2

c# ×1

c#-3.0 ×1

class ×1

linq-to-xml ×1

xml ×1