代码之家  ›  专栏  ›  技术社区  ›  Jaxidian

有处理多对多关系的MemberExpression这样的东西吗?

  •  2
  • Jaxidian  · 技术社区  · 15 年前

    我们正在努力使在系统的所有区域编写强类型代码变得容易,因此 var sortColumn = "FirstName" sortOption = (p => p.FirstName) . 如果排序类型是 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

    在我看来,应该有办法做到这一点,即使它不是很漂亮 foo = business.Addresses.SomeExtension(a => a.State.StateID);

    如果需要更多的背景资料,请看 this old question of mine

    1 回复  |  直到 8 年前
        1
  •  0
  •   Jaxidian    15 年前

    在一个方面,我们发现以下语法是有效的,尽管它并不理想:

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

    当我们使用实体框架并试图从上下文的实体集合中获得一个强类型的.Include()方法时,这种方法是有效的。然而,在某些领域,这对我们不起作用,所以我们希望有更好的解决方案。否则,我怀疑我们可以绕过这些问题,在其他领域跳出一些障碍来实现这一目标。