请帮我解决下面SQL的等效LINQ查询,

时间:2012-02-28 08:13:22

标签: sql linq linq-to-sql

SELECT        0 AS GroupId, 'Select All' AS GroupName
UNION
SELECT        GroupId, GroupName
FROM            tbl_AccountGroup

2 个答案:

答案 0 :(得分:0)

var lst = context.tbl_AccountGroup.Select(a => new {a.GroupID, a.GroupName})
    .ToList();
lst.Insert(0, new {GroupID = 0, GroupName = "Select All"});

类似的东西可能有效..未经测试。根据您使用它的方式,可能会有更好的方法。

答案 1 :(得分:0)

这将执行UNION ALL。所以所有的值都来了:

var result= Enumerable.Range(0,1)
            .Select (s => new {GroupID= 0,GroupName="Select all" })
            .Concat
            (
                db.tbl_AccountGroup
                .Select(a => new {GroupID=a.GroupID, GroupName=a.GroupName})
               .AsEnumerable()
            );

或者我不知道你是否真的需要UNION。如果您想要UNION,则表示语句之间的值为distinct。然后你必须这样做:

var result= Enumerable.Range(0,1)
            .Select (s => new {GroupID= 0,GroupName="Select all" })
            .Union
            (
                db.tbl_AccountGroup
                .Select(a => new {GroupID=a.GroupID,GroupName=a.GroupName})
               .AsEnumerable()
            );

查看UNIONUNION ALL here

之间的差异