c# - 在 List 中创建新的模型数组包含每四个索引中的值
问题描述
我需要将包含模型值的新数组添加到使用四个索引分组中存在的值的列表中。
我正在使用下面的代码从相应的数据库表中检索值:
public List<Log> ViewItFilterUseCount()
{
var ndtms2Utils = new NDTMS2UtilsEntities();
var valueQuery = (from log in ndtms2Utils.Logs
where log.Message.Contains("ViewIt - View Data")
select log);
List<Log> logList = new List<Log>();
foreach (var value in valueQuery)
{
Log model = new Log();
model.Id = value.Id;
model.Date = value.Date;
model.Thread = value.Thread;
model.Level = value.Level;
model.Logger = value.Logger;
model.Message = value.Message;
model.Exception = value.Exception;
logList.Add(model);
}
return logList;
}
我需要从出现在 : 符号之后的 Message 变量中提取值,并使用它们为 Message 字段创建一个新值,格式如下:ViewIt - 查看数据 - 用户已选择:messageValue1、messageValue2、messageValue3、messageValue4。
模型中剩余变量的值可以使用 4 组的最后一个索引中的值填充。
表格格式的数据如下所示:
使用前四行作为示例添加的消息将显示为:
ViewIt - 查看数据 - 用户已选择:正在治疗的客户、阿片类药物、英格兰东部、埃塞克斯。
解决方案
这将一次仅将 4 个日志条目分组,并给出一个组合消息作为输出:
public List<Log> ViewItFilterUseCount()
{
var ndtms2Utils = new NDTMS2UtilsEntities();
// Query LINQ-to-Entities database for all matching rows
var valueQuery = ndtms2Utils.Logs.Where((o) => o.Message.StartsWith("ViewIt - View Data")).ToList();
// Then process client-side
int index = 0;
return (from log in valueQuery
group log by (index++ / 4) into grp
let log = grp.Last()
select new Log {
Id = log.Id,
Date = log.Date,
Thread = log.Thread,
Level = log.Level,
Logger = log.Logger,
Message = "ViewIt - View Data - the user has selected: " + string.Join(", ", grp.Select((l) => l.Message.Substring(l.Message.IndexOf(": ") + 2))),
Exception = log.Exception
}).ToList();
}
如果传入日志条目的顺序发生轻微变化,则此操作可能会失败,或者缺少条目会导致剩余条目移动。
推荐阅读
- amazon-web-services - Amazon S3 存储数百万个文件
- linkedin - LinkedIn 分享文章引发了一些错误异常
- redux - 使用 createSlice reduxtoolkit 进行重构
- google-apps-script - 如何通过脚本检索 Google 表格的最后一行(无论是否为空)?
- python - PyTorch 1D CNN 问题
- azure - JobManagerTask 的 Azure Batch 和用例
- flutter - Flutter 页面来得太慢了。当它包含长数据时
- python - python只读取pdf表格的几行
- kubernetes-helm - 如何从 Kubernetes 中卸载 Tiller?
- reactjs - 在使用 RTKQ 查询的组件中对单击事件调用 updateCachedData 的正确方法是什么?