小编dra*_*zen的帖子

如何按多个值对XML数据进行分组

我需要从XML分组"Document"值.问题是因为键值(productType)可以是多个.

这是XML:

<Documents>
<Document>
    <id>1</id>
    <title>title1</title>
    <productTypes>
        <productType id="x1">Capital Costs Analysis Forum - Brazil</productType>
  <productType id="x3">Environmental, Health and Safety &amp; Sustainability</productType>
    </productTypes>
</Document>
<Document>
    <id>2</id>
    <title>title2</title>
    <productTypes>
  <productType id="x1">Capital Costs Analysis Forum - Brazil</productType>
    </productTypes>
</Document>
<Document>
    <id>3</id>
    <title>title3</title>
    <productTypes>
  <productType id="x3">Environmental, Health and Safety &amp; Sustainability</productType>
    </productTypes>
</Document>
<Document>
    <id>4</id>
    <title>title4</title>
    <productTypes>
        <productType id="x2">Defense, Risk &amp; Security</productType>
    </productTypes>
</Document>
Run Code Online (Sandbox Code Playgroud)

这就是我尝试的:

var documents = from document in some.Descendants("Document")
                group document by (string)document
                    .Element("productTypes")
                    .Elements("productType")
                    .First() into docGroup
select docGroup;
Run Code Online (Sandbox Code Playgroud)

只有有一个productType元素,我的代码才有效.如果productType有多个值,如何更改我的代码?

.net c# xml linq linq-to-xml

6
推荐指数
1
解决办法
741
查看次数

如果删除 HTML 元素,焦点应该设置在哪里?

我有这样的 HTML(简化):

<ul>
  <li><a id="1" onclick="removeItself(1)" href="#">first</a></li>
  <li><a id="2" onclick="removeItself(2)" href="#">second</a></li>
</ul>
<input type="text"></input>
Run Code Online (Sandbox Code Playgroud)

如果点击其中一个链接,它将被删除。就我而言,删除后,整个列表将再次呈现。

有很多问题,但一般是如果具有焦点的元素被删除,在哪里设置焦点?

例如,如果第二个列表元素被删除或所有元素都被删除,焦点应该设置在哪里?

在这种情况下,什么解决方案可以通过网络访问?将焦点始终设置在列表中的第一项是否可以接受,但如果删除所有项目以将焦点设置到下一个(输入)或上一个元素?

在 IE 中,焦点将被重置,并且将从页面的开头开始。

html internet-explorer accessibility focus screen-readers

5
推荐指数
1
解决办法
1633
查看次数

如何在作用域服务生命周期内与多个接口共享同一个实例

这是与本页上的示例类似的示例。

public interface IOperation
{
  string OperationId { get; }
}

public interface IScopedOperation1 : IOperation { }

public interface IScopedOperation2 : IOperation { }

public class DefaultOperation : IScopedOperation1, IScopedOperation2
{
   public string OperationId { get; } = Guid.NewGuid().ToString()[^4..];
}

public class OperationLogger
{
  private readonly IScopedOperation1 _scopedOperation1;
  private readonly IScopedOperation2 _scopedOperation2;

  public OperationLogger(
      IScopedOperation1 op1, IScopedOperation2 op2) =>
      (_scopedOperation1, _scopedOperation2) = (op1, op2);

  public void LogOperations()
  {
     Console.WriteLine($"Operation1: [ {_scopedOperation1.OperationId} ]");
     Console.WriteLine($"Operation2: [ {_scopedOperation2.OperationId} ]");
  }
} …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection .net-core asp.net-core-6.0

3
推荐指数
1
解决办法
1078
查看次数