C#Linq查询查找双数平均值的重叠。 [英] C# Linq query to find overlap of average of double numbers.

查看:76
本文介绍了C#Linq查询查找双数平均值的重叠。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello:

我有一群人参加了一个电子游戏,每个人都玩了两次相同的gaem并有2条记录。  我将这种游戏性能的结果保存在struct数组中。  现在,
我的目标是创建一些群组,每个群组将拥有与之前表现相似的平均记录的人,但平均记录并不重要,我只需要人们的身份证。

这是我现在的代码:

const double deviation = 2.5;

public class ManByRecords
{
public string ID { get; set; }
public double BestRecord { get; set; }
public double WorstRecord { get; set; }
}

public class ManByGroup
{
public List<string> ID_IN_Group { get; set; }
}

var man1 = new ManByRecords() { ID = "#1", WorstRecord = 10.0, BestRecord = 16.0 };
var man2 = new ManByRecords() { ID = "#2", WorstRecord = 20.0, BestRecord = 26.0 };
var man3 = new ManByRecords() { ID = "#3", WorstRecord = 21.0, BestRecord = 27.0 };
var man4 = new ManByRecords() { ID = "#4", WorstRecord = 30.0, BestRecord = 36.0 };

var group1 = new ManByGroup() { ID_IN_Group = new List<string> { "#1" } };
var group2 = new ManByGroup() { ID_IN_Group = new List<string> { "#2", "#3"} };
var group3 = new ManByGroup() { ID_IN_Group = new List<string> { "#4" } };

将不同的人放入一个组的规则如下:if他们的平均记录在
范围内偏差 ,然后它们属于同一组;否则,他们是他们各自组中的唯一成员。

例如:for man1 ,作为他的平均记录是:13(= 10 + 16/2),没有其他人的
平均记录在13的偏差范围内(从10.5到15.5,从13-2.5到13 + 2.5),因此,man1的ID在一个组中,其ID为#。

对于man2和man3:man2的平均记录是:23(= 20 + 26/2); man3的平均记录是:24(21 + 27/2)。   man2的平均记录偏离20.5至25.5;而man3的平均
记录偏离21.5至26.5;两个平均记录都具有值的重叠范围,因此,两个人的ID现在位于同一组中:group2。

man4相同。

I想用LINQ来做这件事,但似乎不是直截了当的。  我不需要使用不同的组名,例如group1,group2或group3。  您可以将所有组放在struct / class列表中,
但我可以轻松访问它们,没关系。

欢迎任何想法!

推荐答案

您好:

感谢您的回复,因为我的C#水平不高,我只学了几个月,所以我可能需要一些时间来研究您的代码,我我理解后会回复你。

Thanks for your reply, as my level of C# is not high, I learned it only a few months, so it could take me some time to study your code first, I will get back to you after I understand it.

谢谢,


这篇关于C#Linq查询查找双数平均值的重叠。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆