我有以下方法:
public List<test_view> SelectTypeAnonimowe(string filtr)
{
testViewClassDataContext tv = new testViewClassDataContext();
List<test_view> q7 = tv.test_views
.Where(w => w.FirstName.StartsWith("H") && w.Type == filtr)
.Select(p => new {p.AutoName, p.LastName })
.ToList();
return q7;
}
请告诉我有什么问题?
答案 0 :(得分:3)
这是因为您强制匿名类型为test_view
类型。您应该创建test_view
结果:
List<test_view> q7 = tv.test_views
.Where(w => w.FirstName.StartsWith("H") && w.Type == filtr)
.Select(p => new test_view(p.AutoName, p.LastName))
.ToList();
话虽这么说,你的test_view
应该有一个构造函数,它将两个变量作为输入。像这样:
public string AutoName {get; private set;}
public string LastName {get; private set;}
public test_view(string autoName, string lastName){
AutoName = autoName;
LastName = lastName;
}
请注意,上面的选项不适用于LINQ
实体,LINQ
实体需要无参数构造函数。或者,只要您的test_view
具有两个属性:
public string AutoName {get; set;} //public property here
public string LastName {get; set;} //public property here
public test_view(){ //parameterless constructor here
}
您也可以初始化这样的属性(与test_view
创建一起):
List<test_view> q7 = tv.test_views
.Where(w => w.FirstName.StartsWith("H") && w.Type == filtr)
.Select(p => new test_view() {AutoName = p.AutoName, LastName = p.LastName})
.ToList();
答案 1 :(得分:1)
如果您创建新的匿名类型
.Select(p => new {p.AutoName, p.LastName })
然后将其存储到var q7
而不是List<test_view> q7
或
在test_view
中创建Select()
的新对象:
.Select(p => new test_view() {AutoName = p.AutoName, LastName = p.LastName })
答案 2 :(得分:1)
您没有创建任何test_view
。您需要在Select
电话中执行此操作。
.Select(p => new test_view(p.AutoName p.LastName))