使用Linq从存储过程中获取单列行集,如何清理此黑客作业?

时间:2009-01-31 19:03:06

标签: .net linq linq-to-sql

我有一个人在编写存储过程时是一个向导,他可以立刻将10个表格打到一个列。我很想投入几天与他合作返回XML而不是行集,因为我可以整天消化那些没有任何问题。我这样说是因为获取行集的结果是一个挑战,因为我可以轻松地使用WCF向下发送。这是我为完成这项工作而做的黑客......

public static List<int> GetListOfManagersForRegional(int empId)
    {
        CMSDataContext cms = new CMSDataContext();
        List<cmsManagerList> mgrs = cms.GetRegionalsManagers(empId).ToList();
        List<int> managers = new List<int>();
        foreach (cmsManagerList m in mgrs)
        {
            if(m.ManagerId != null) managers.Add((int)m.ManagerId);
        }
        return managers;
    }

cmsManagerList是我在ORM中创建的类型,使存储过程可以将其值返回给我可以让Linq消化的值。我真正想做的是直接从存储过程直接返回一个列List<int>。有谁知道如何更好地做到这一点?

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

public static IEnumerable<int> GetListOfManagersForRegional(int empId) {
    using (var cms = new CMSDataContext()) {
        return
            from m in cms.GetRegionalsManagers(empId)
            where m.ManagerID != null
            select m.ManagerId;             
    }
}