1

我使用实体框架并具有以下代码:

public class AdvPackageInfo
{
    private int PackageId;
    private string Caption;
    private int Duration;
    private int Count;
    private bool Enable;
    private float Price;
}


 AdvertismentAgancyEntities enn = new AdvertismentAgancyEntities();

 List<AdvPackageInfo> lst = (from s in enn.Tbl_AdvPackage select new AdvPackageInfo { }).ToList();

    repeater1.DataSource = lst;
    repeater1.DataBind();

但它只工作 1 次,当我的页面第二次加载时,它执行失败并引发 NullReferenceException ......!!

根据这个页面: http
://connect.microsoft.com/VisualStudio/feedback/details/663200/linq-to-entities-throws-nullreferenceexception-when-the-output-attribute-set-is-empty 它是点网框架问题。

我也试试这个代码:

var q = (from s in enn.AdvPackage select s).toList();

但它也不起作用。

有没有更好的方法让 linq 选择列表????

4

1 回答 1

3

而不是这一行:

List<AdvPackageInfo> lst = 
    (from s in enn.Tbl_AdvPackage select new AdvPackageInfo { }).ToList();

你可以这样做:

var lst = new List<AdvPackageInfo>();
for (int i = 0; i < enn.Tbl_AdvPackage.Count(); i++)
    lst.Add(new AdvPackageInfo());

(请注意,MS Connect 页面中建议的解决方法是错误的。使用Enumerable.Repeat将创建一个包含对单个对象的引用的列表)


更新下面的评论: 如果您只是想加载数据网格,那么您只需要将列表检索为:

var lst = enn.Tbl_AdvPackage.ToList();
于 2013-01-19T11:38:36.777 回答