如何在具有私有构造函数的类中使用iQueryable?

时间:2016-02-10 11:27:42

标签: c# linq linq-to-sql

我刚开始学习Linq,我正在尝试将数据库表映射到一个类,但我无法使用私有构造函数。

我的代码:

SET NOCOUNT ON;

我也尝试过映射到一个新实例:

namespace LinqTest
{
    using System.Collections.Generic;
    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    using System.Linq;

    [Table(Name = "tblCity")]
    public class City
    {
        private City()
        {
        }

        [Column(IsPrimaryKey = true, Name = "CityId")]
        public int Id { get; private set; }

        [Column(Name = "CityName")]
        public string Name { get; private set; }

        public static List<City> GetList()
        {
            var dataContext = new DataContext(Database.ConnectionString());
            var cities = dataContext.GetTable<City>();

            var iQueryable =
                from city in cities
                select city;

            return iQueryable.ToList();
        }
    }
}

我可以做些什么来完成这项工作?我愿意采用其他方法。 感谢

1 个答案:

答案 0 :(得分:1)

你无法在foreach中使用iqueryable个对象。因为这只是查询。您必须获得ToList()的对象。请试试这个:

var list = new List<City>();

            foreach (var iCity in iQueryable.ToList())// return iqueryable to list
            {

                var city = new City
                {
                    Id = iCity.Id,
                    Name = iCity.Name
                };

                list.Add(city);
            }

            return list;

或者您可以搜索automapper。一个例子here