列别名LINQ查询

时间:2011-03-30 06:14:35

标签: linq-to-sql

我有这样的查询,我希望将这两个查询联合起来。但是union条件是两个表必须具有相同列名的结果,因此必须检索GroupName,但在此Query中必须将其别名为Type1。

var vTLst = (from t in db.Types select t.Type1).Union
            (from g in db.Groups select g.GroupName).ToList().Distinct();

请帮帮我......

1 个答案:

答案 0 :(得分:0)

这是错误的,如果t.Type1g.GroupName是列,并且您的查询应该使用相同类型。结果只是IQueryable<string>或您拥有的任何列类型,没有带名称或任何内容的匿名类型。

如果您有更多列或匿名类型的更复杂查询,则可以使用列别名。

var vTLst = (from t in db.Types select new {Col1 = t.Type1, Col2 = t.Type2}).Union
            (from g in db.Groups select new {Col1 = g.GroupName, Col2 = g.Col2})
            .ToList().Distinct();

如果您的问题是列不是同一类型,您可以将它们转换为相同的类型

var vTLst = (from t in db.Types select t.Type1.ToString()).Union
            (from g in db.Groups select g.GroupName.ToString()).ToList().Distinct();