p.FirstName) .-6ren">
gpt4 book ai didi

c# - 是否存在处理多对多关系的 MemberExpression 之类的东西?

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:34 24 4
gpt4 key购买 nike

我们正在努力使在我们系统的所有区域编写强类型代码变得容易,而不是设置 var sortColumn = "FirstName"我们想说sortOption = (p => p.FirstName) .如果 sortOption 的类型是 Expression<Func<Person, object>>,这会很好用(我们实际上在代码中使用了泛型,但这并不重要)。但是,我们在处理多对多关系时遇到了问题,因为这种表示法不适用。

考虑这个简单的代码:

    internal class Business
{
public IQueryable<Address> Addresses { get; set; }
public string Name { get; set; }
}

internal class Address
{
public State MyState { get; set; }
}

internal class State
{
public string Abbreviation { get; set; }
public int StateID { get; set; }
}

是否可能有这种 MemberExpression识别企业的 StateID 列?同样,使用它的目的不是返回 StateID 对象,它只是识别该实体的属性(用于排序、过滤和其他目的)。

在我看来,应该有一些方法可以做到这一点,即使它不如 foo = business.Addresses.SomeExtension(a => a.State.StateID); 漂亮。 .这真的可能吗?

如果需要更多背景知识,请查看 this old question of mine .我们已经对代码进行了重大更新,但这应该能让您大致了解这个问题背后的背景。

最佳答案

在一个领域,我们发现以下语法有效,尽管它并不理想:

business.Addresses.First().State.StateID;

当我们使用 Entity Framework 并尝试从 Context 的实体集合中获取强类型的 .Include() 方法时,这会起作用。然而,有些地方这对我们不起作用,所以我们希望有更好的解决方案。否则,我怀疑我们可以解决这些问题并跳过其他领域的一些障碍来完成这项工作。

关于c# - 是否存在处理多对多关系的 MemberExpression 之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3054096/

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