gpt4 book ai didi

c# - EF 核心 2、.NET 核心 2 :How do I query the same column for multiple conditions using IQueryable?

转载 作者:行者123 更新时间:2023-12-04 10:11:07 27 4
gpt4 key购买 nike

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

Table with 2 columns (UserId and value)

我将传递 UserId 和 2 个字符串。例如:userId: 1, key1: h1, key2: h2到具有相似签名的 API。

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 的值​​。如果用户没有这两个 key ,我需要得到 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>

关于c# - EF 核心 2、.NET 核心 2 :How do I query the same column for multiple conditions using IQueryable<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com