编辑:2013年9月15日 - 我正在描述我的情景进一步分解为帮助每个人更好地了解我的情况的步骤.添加了整个应用程序的源代码以供下载.如果要跳转到原始问题,请向下滚动到最后一个标题.请让我知道这些问题.谢谢
阿拉斯加州首府朱诺有一个AST(阿拉斯加州警官)总部大楼,他们希望在这个大屏幕上显示一个显示和自动更新的单个号码.该号码称为(犯罪商数指数)或CQI
CQI基本上是一个计算出的数字,用于显示当前的国家犯罪情况......
运行屏幕的程序是.NET WPF应用程序,它通过Hot IObservable流不断接收CrimeReport对象.
每个城市计算CQI,然后采用所有城市的Sum(),称为国家CQI以下是计算国家CQI的步骤
每次报告犯罪时,CrimeReport都会发送到.NET应用程序.它具有以下组件
犯罪日期时间
市 - 市/辖县
SeverityLevel - 严肃/非严重
EstimatedSolveTime - AST确定解决犯罪所需的预计天数.
因此,在此步骤中,我们订阅了IObservable并创建了MainViewModel的实例
IObservable<CrimeReport> reportSource = mainSource.Publish();
MainVM = new MainViewModel(reportSource);
reportSource.Connect();
Run Code Online (Sandbox Code Playgroud)
当您收到报告时,请按城市进行分组
var cities = reportSource.GroupBy(k => k.City)
.Select(g => new CityDto(g.Key, g);
Run Code Online (Sandbox Code Playgroud)
CityDto是一个DTO课程,它接收当前城市的所有报告并计算城市的CQI.
城市CQI的计算通过以下公式完成
如果严重犯罪总数与非严重犯罪总数之比小于1
然后
城市的CQI =比率x估计求解时间的最小值
其他
城市的CQI =比率x最大估计求解时间
这是CityDto的类定义
internal class CityDto
{
public string CityName { get; set; }
public IObservable<decimal> CityCqi {get; set;}
public …Run Code Online (Sandbox Code Playgroud)