英文:
Change Appearance of the values that returned form database (DOT NET)
问题
我想要改变从数据库返回的值的外观,就像我想要的那样。修改值后,我想将这个外观分配给视图模型。
例如,我有一个模型,其中包含以下字段:
ID,用户名,历史日期,时钟。
视图模式
ID,用户名,历史日期,签到,签退
如果时钟索引 % 2!= 0(偶数),我想要按用户名和历史日期分组,并将该值插入到签到中
否则,如果索引 % 2 == 0(偶数),将该值插入到签退中
有关更多详细信息-->
我尝试了这个
var Filter = _context.Attendances
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new {
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0),
});
但是得到了异常System.Collections.Generic.IEnumerable`1[Eams.Models.Attendance]。
我尝试了Svyatoslav Danyliv的这段代码
var rawData = _context.Attandances
.Select(a => new { a.Username, a.HistorDay, a.Clock })
.ToList();
var result = rawData
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new
{
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0).ToList(),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0).ToList(),
});
foreach (var item in result)
{
Debug.WriteLine($"ALL {item}");
}
在控制台中--> 结果 ==>
ALL { Username = 43091, HistorDay = 6/23/2023 12:00:00 AM, In = System.Collections.Generic.List1[System.TimeSpan], Out = System.Collections.Generic.List
1[System.TimeSpan] }
英文:
I would like to change the appearance of the values that are returned from the databases as I wish. After modifying the values, I would like to assign this appearance to View Model
e.g. I have a Model that contains these field
ID, Username,HistorDay,Clock.
View Mode
ID,Username,HistorDay, check-in, check-out
I want to group by Username and HistorDay if Clock index % 2! = 0 (even) insert this value to check-in
else index % 2 == 0 (even) insert this value to check-out
For More Details -->
I try this
var Filter = _context.Attendances
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new {
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0),
});
but get Exception System.Collections.Generic.IEnumerable`1[Eams.Models.Attendance]'
I try this code form Svyatoslav Danyliv
var rawData = _context.Attandances
.Select(a => new { a.Username, a.HistorDay, a.Clock })
.ToList();
var result = rawData
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new
{
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0).ToList(),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0).ToList(),
});
foreach (var item in result)
{
Debug.WriteLine($"ALL {item}");
}
in console --> Result ==>
ALL { Username = 43091, HistorDay = 6/23/2023 12:00:00 AM, In = System.Collections.Generic.List1[System.TimeSpan], Out = System.Collections.Generic.List
1[System.TimeSpan] }
答案1
得分: 0
"Value Conversions"可以在使用"EF Core"时使用。这是最佳方法。以下是示例和如何使用它的方式:
https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions?tabs=data-annotations
英文:
"Value Conversions" can be used if you are using "EF Core". That's the best way to do it. Here's an example and how to use it
https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions?tabs=data-annotations
答案2
得分: 0
为了处理您的查询,需要从表单数据库中选择最小数据,然后在客户端端进行后处理:
var rawData = await _context.Attendances
.Select(a => new { a.Username, a.HistorDay, a.Clock })
.ToListAsync();
var result = rawData
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new {
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0).ToList(),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0).ToList(),
});
这是代码的翻译部分,不包含其他内容。
英文:
For your query it is needed to select minimal data from form database and then post process on the client side:
var rawData = await _context.Attendances
.Select(a => new { a.Username, a.HistorDay, a.Clock })
.ToListAsync();
var result = rawData
.GroupBy(x => new { x.Username, x.HistorDay })
.Select(x => new {
Username = x.Key.Username,
HistorDay = x.Key.HistorDay,
In = x.Select(c => c.Clock).Where((q, w) => w % 2 != 0).ToList(),
Out = x.Select(c => c.Clock).Where((q, w) => w % 2 == 0).ToList(),
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论