gpt4 book ai didi

c# - 使用 LINQ 查询动态数据

转载 作者:行者123 更新时间:2023-11-30 13:49:31 25 4
gpt4 key购买 nike

我有三个表:Houses、Person 和 PersonH​​ouseAssignments

在我的 Houses-Table 中,我有不同的列,例如 HouseNameHouseTypeDescription

PeopleHouseAssignments 中,我得到了像 PersonIdHouseId 这样的列。


我现在想通过以下方式在我的 WPF DataGrid 中显示它:

一个名为 HouseNames 的列,其中包含我的 Houses-Table 中所有可用的 HouseName。

我现在在我的数据网格中有一个复选框,应该将当前选定的人分配给房子。

[ ] House1
[x] House2
[ ] House3
[x] House4

这个人被分配到 House2 和 House4,因为表“PersonH​​ouseAssignments”有两行:

PersonId | HouseId
1 | 2
1 | 4

我应该如何创建我的 LINQ 查询?

我已经尝试过类似的方法,但这没有用:

from p in _dataContext.Houses
from a in _dataContext.PersonHouseAssignments
select new {HouseNames = p.HouseName, IsAssigned = a.HouseId == p.Id, Description = a.Description }

最佳答案

我假设您的查询会针对特定的人?也就是说,如果特定的人被分配到名为 HouseName 的房子,则返回集合中每个项目的 IsAssigned 值将是 true?在这种情况下,您可以使用嵌套子查询:

int personId = 1;

var query =
from h in _dataContext.Houses
select new
{
HouseName = h.HouseName,
IsAssigned =
(
from a in _dataContext.PersonHouseAssignments
where a.HouseId == h.Id && a.PersonId == personId
select a
).Any()
};

编辑:如果您想包含 PersonH​​ouseAssignments 中的Description,您可以使用:

int personId = 1;

var query =
from h in _dataContext.Houses
let a =
(
from pha in _dataContext.PersonHouseAssignments
where pha.HouseId == h.Id && pha.PersonId == personId
select pha
).FirstOrDefault()
select new
{
HouseName = h.HouseName,
Description = a != null ? a.Description : "",
IsAssigned = a != null
};

关于c# - 使用 LINQ 查询动态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266975/

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