gpt4 book ai didi

c# - 使用带组的 Linq 获取百分比值

转载 作者:行者123 更新时间:2023-11-30 21:35:44 24 4
gpt4 key购买 nike

我是 linq 的新手,我不知道如何让它在下面的场景中为我工作,我看到过类似的问题,但无法获得/修改提供的解决方案我的场景。

我的方案是从 XML 中提取数据,我将这些数据分组到一个值上,获取计数,我还想获取它的百分比。

我的数据是这样的。

Region | Code1 | Code2 | Code3 
A 1 0 0
B 1 2 0
A 1 1 1
A 1 2 1
A 1 2 0
B 1 1 1
A 0 0 0
A 0 2 0

我需要返回的是按地区分组的数据,其中记录的百分比在 3 个代码字段中的任何一个中具有 2。因此按地区分组,然后计算包含 2/属于该地区的所有记录的记录。

第一部分的 linq 代码如下。

 return from r in xdoc.Root.Elements("ROW")
group r by r.Element("Region").Value into grp
select new KeyValuePair<string, int>(grp.Key, grp.Count());

而且我不确定从这里去哪里,我已经尝试在组的上方和下方放置一个 let 语句,但没有成功。当我将它放在组上方时,它似乎无法在我的选择中访问。如果我把它放在我的组语句下面,我不确定如何访问基于“r”的 XML 元素。

谢谢

最佳答案

对于如下所示的 XML:

<root>
<ROW>
<Region>A</Region>
<Code1>1</Code1>
<Code2>2</Code2>
<Code3>0</Code3>
</ROW>
<!-- More rows -->
<root>

计算 Code1、Code2 或 Code3 等于“2”的元素,然后应用百分比公式。

var xdoc = XDocument.Load("TextFile1.xml");
var result = from r in xdoc.Root.Elements("ROW")
group r by r.Element("Region").Value into g
let anyTwoCount = g.Count(r => r.Element("Code1").Value == "2"
|| r.Element("Code2").Value == "2"
|| r.Element("Code3").Value == "2")
select new KeyValuePair<string, int>(g.Key, anyTwoCount * 100 / g.Count());

关于c# - 使用带组的 Linq 获取百分比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48951885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com