gpt4 book ai didi

c# - 在查询中将 sql 与 c# 列表进行比较?

转载 作者:行者123 更新时间:2023-12-03 20:52:45 25 4
gpt4 key购买 nike

我在将 sql 数据库中的值与代码中的对象列表进行比较时遇到问题。

对象在数据库中不存在

列表中的对象示例:

{
public long CompareId
public bool HasAccess
}

我在 c# 中使用 SQLBuilder
然后我想做一个这样的查询:

编入代码
SELECT * FROM EntityPermission
WHERE EntityPermission.HasAccess = listOfObjects.Where(obj => obj.CompareId == EntityPermission.CompareId).HasAccess

在更多的代码中,但使用 sql builder
query.WHERE("(EntityPermission.HasAccess = {0})", listOfObjects.Where(obj => obj.CompareId == EntityPermission.CompareId).HasAccess)

我完全知道我在这里混合了 c# 和 sql,但这是我可以解释我想要完成的事情的最好方式。

言中

我想找到 EntityPermission 其中 HasAccess 列等于对象的 HasAccess 属性,其中它们具有相同的 Id。

真的很感谢大家的帮助!

最佳答案

I want to find the EntityPermission where the HasAccess column is equal to the HasAccess property of the object where they have the same Id.



所以你有一张 table EntityPermissions .每 EntityPermission在这个表中至少有一个 bool 属性 HasAccess ,以及 long 属性中的主键 Id
此外,您有一个对象列表,其中每个对象至少有一个 CompareId 和一个 HasAccess。

如果我正确阅读了您的要求,您希望所有 EntityPermissions 的 Id 也是您列表中的 CompareId,并且具有相同的 HasAccess 值。

因此,如果您的列表具有值:
{10, false}, {11, true}, {12, false},

你有EntityPermissiont:
Id  HasAccess 
09 true don't want this one, Id is not in the list
10 true don't want this one, Id is in the list, but HasAccess incorrect
11 true I want this one: Id is in the list, HasAccess is correct
12 false I want this one: Id is in the list, HasAccess is correct

通常你会使用 Where(x => y.Contains(x))为了这。问题是,您只能选择一个属性。
var checkValues = new
{
new {CompareId = 10, HasAccess = false},
new {CompareId = 11, HasAccess = true},
new {CompareId = 12, HasAccess = false},
}

var result = dbContext.EntityPermissions.Select(entityPermission => new
{
ValueToCompare = new
{
CompareId = entityPermission.Id,
HasAccess = entityPermission.HasAccess,
},

Original = entityPermission,
})

// keep only those selected items that have a ValueToCompare in CheckValues
.Where(selectedItem => checkValues.Contains(selectedItem.ValueToCompare)

// from the remaining items, extract the original EntityPermission
.Select(selectedItem => selectedItem.Original);

关于c# - 在查询中将 sql 与 c# 列表进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62148928/

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