EF Core 2,.NET CORE 2:如何使用IQueryable <T>在同一列中查询多个条件?

阿尼什

我有一个数据库表类似于下图中的一个

具有两列的表(UserId和值)

我将传递UserId以及2个字符串。对于具有相似签名的APi的Ex:userId:1key1:h1key2:h2

Public List<T> CheckValuesForUser(string userId, string key1, string key2)

我需要检查特定的userId 1是否同时具有h1和h2值。如果用户没有两个键,则查询应返回null。

我已经尝试过以下查询,

  1. context.tableName.where(i=> i.value.Equals("h1") && i.value.Equals("h2"))-这什么也不会返回。我假设对每行执行此谓词。
  2. Context.tableName.Where(i=> new string[]{ Key1,Key2 }.Contains(i.Value))-即使用户没有Key2的值,它也会返回一个值。如果用户没有两个键,我需要得到一个NULL结果。
  3. var list1= Context.tableName.Where(i=> i.Value.Equals(key1)).toList(); var list2= Context.tableName.Where(i=> i.Value.Equals(Key2)).toList(); if(list1.Count > 0 && list2.Count > 0) list1.AddRange(list2);

有人可以帮我找到更好的解决方案吗?我正在使用Asp.Net Core 2.2

马特·亨斯利

由于h1和h2条目是单独的记录,因此您将需要独立检查两个值。

// Group the records by the expected UserId
var groupedRecords = context
                     .TableName
                     .Where(t => t.UserId == userId)
                     .GroupBy(t => t.UserId);

// Ensure both the required records exist within the grouping
var hasRequiredRecords = groupedRecords.Any(i => i.Value.Equals("h1"))
                                        && Any(i => i.Value.Equals("h2"))

// Now that you know you have the required values, return them
return groupedRecords.Where(i => i.Value.Equals("h1") && i.Value.Equals("h2");

最后一行将仅返回带有值h1的两个记录(作为单个h2提供的userId提供)List<T>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET CORE 2 EF包含

EF Core 2, .NET CORE 2 :How do I query the same column for multiple conditions using IQueryable<T>?

1视图创建操作中的.NET Core EF Core 2模型

.NET Core库中的EF Core

.NET Core 2 EF,对象引用为null

抽象 ef core 2 dbContext

在 EF Core 2 中使用 Contains as (NOT) EXIST 在 EF Core 3.1 中不再有效

ASP.NET Core 2 MVC + EF Core 2或Angular 5

从 EF Core 2 迁移到 EF Core 3

从 EF Core 2 迁移到 EF Core 3 ... 无法翻译

ASP.NET Core 2和EF中的跟踪表更改

.NET Core 2-EF Core错误处理保存更改

NET Core在Azure Function v2上进行EF Core迁移的问题

ASP.Net Core + EF + OData V4 Core Beta 2

如何将同一列添加到EF Core中的所有实体?

在EF Core 2中使用单表名称

.NET Core中无法使用EF更新数据库

使用.net Core / EF Core的SQL Server 2016与ASP MVC应用中的列加密

使用 EF Core Code First 和 IdentityUser 的 .Net Core API

.NET / EF Core中的批量插入优化

如何使EF-Core(2.1)编译查询返回IQueryable?

GC如何与.Net Core 2中的DI配合使用

为什么会出现错误:使用EF和AutoFac的.net core 2中的“无法访问已处置的对象”?

Net Core Worker Windows服务中的EF Core DBContext

在ASP.NET Core WebApplicationFactory中重写EF Core DbContext

.NET Core EF core中对dbcontext的并行调用

使用ASP.Net Core 2 Web App使用EF6调用完整库

ASP.Net Core如何获得EF Core和Identity中的用户角色

当对象包含外键时,使用 EF Core 在 ASP.NET Core 6 中创建对象