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

如何从Linq中的不同表中选择相同的列名?

  •  1
  • David  · 技术社区  · 14 年前

    我有两个具有相同列名的表,例如,表A和表B都有列名“Test”。我想从表A和表B中选择列Test来创建实体类。我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   p.campbell    14 年前

    听起来像是希望TableA和TableB这两个实体合并到一个新对象中。你可以用 .Select() 扩展方法创建一个新的匿名类型,或将其添加到已定义的类中。

    这里的要求是您必须在TableA和TableB之间找到一个公共属性。我猜你有 ID

    匿名类型

     var mergedTests =  from a in db.TableA
                        join b in db.TableB on a.CommonID equals b.CommonID
                        select new 
                               { TestFromA = a.Test, TestFromB = b.Test }
                        .ToList();
    

    现有类

     List<MyCustomTests> mergedTests =  from a in db.TableA
                        join b in db.TableB on a.CommonID equals b.CommonID
                        select new MyCustomTests 
                           { TestName= a.Test, ShortName= b.Test }
                        .ToList();
    
        2
  •  0
  •   zerkms    14 年前
    class Program
    {
        static void Main(string[] args)
        {
            var A = new Data[] {
                new Data { Test = 1, Relation = 1 },
                new Data { Test = 2, Relation = 2 },
                new Data { Test = 3, Relation = 3 },
                new Data { Test = 4, Relation = 4 },
                new Data { Test = 5, Relation = 5 },
            };
    
            var B = new Data[] {
                new Data { Test = 2, Relation = 2 },
                new Data { Test = 3, Relation = 3 },
                new Data { Test = 5, Relation = 5 },
            };
    
            var res = from a in A
                      join b in B on a.Relation equals b.Relation
                      select new { TestA = a.Test, TestB = b.Test };
        }
    }
    
    class Data
    {
        public int Test;
        public int Relation;
    }