我刚开始学习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();
}
}
}
我可以做些什么来完成这项工作?我愿意采用其他方法。 感谢
答案 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