这是我的WebGrid代码:
@grid.Table(
tableStyle: "table table-responsive table-bordered",
columns: grid.Columns(
grid.Column(format:@<text> <input type="checkbox" name="check[]" code="@item.SubjectName" id="Check_@item.SubjectCode" value="Check_@item.Schedule" /></text>, header: "Check"),
grid.Column(columnName: "SubjectCode", header: "SubjectCode"),
grid.Column(columnName: "SubjectName", header: "SubjectName"),
grid.Column(columnName: "DescriptiveTitle", header: "DescriptiveTitle"),
grid.Column(columnName: "TotalUnits", header: "Units"),
grid.Column(columnName: "Schedule", header: "Schedule"),
grid.Column(columnName: "Instructor", header: "Instructor"),
grid.Column(columnName: "Room", header: "Room")
)
)
这是我的控制器上的内容:
using (dc)
{
var v = (from a in dc.Subjects
from b
in dc.Curricula
.Where(o => a.SubjectCode == o.CourseCode)
.DefaultIfEmpty()
where
a.SubjectCode.Contains(search) ||
a.SubjectName.Contains(search) ||
a.Curriculum.DescriptiveTitle.Contains(search) ||
a.Schedule.Contains(search) ||
a.Instructor.Contains(search) ||
a.Room.Contains(search)
select new { Subject = a, Curriculum = b}
);
totalRecord = v.Count();
v = v.OrderBy(x => x.Curriculum.Year).ThenBy(x => x.Curriculum.Sem);
return v.ToList();
}
我对在webgrid中调用的外部数据(“ DescriptiveTitle”,“ TotalUnits”)有疑问。我尝试了其他找到的建议代码,但仍然无法正常工作。
我尝试使用linq联接2表,但该行:
return v.ToList();
有误。我感谢有人能帮助我。
CS0029 Cannot implicitly convert type 'System.Collections.Generic.List<<anonymous type: UESLProject.Subject Subject, UESLProject.Curriculum Curriculum>>' to 'System.Collections.Generic.List<UESLProject.Subject>' UESLProject C:\Users\jerome agda\documents\visual studio 2015\Projects\UESLProject\UESLProject\Controllers\AccountController.cs 162 Active
答案 0 :(得分:1)
问题不是return
语句本身,而是您的方法要返回的实际类型为UESLProject.Subject
,而您返回的是匿名类型列表。如果您需要返回同时包含Subject
和Curriculum
的对象列表,则需要更改方法的签名并制作一个单独的类来包装这两个对象(除非您希望使用键值配对集合或Tuple
)
这是一个简短的示例:
class Wrapper
{
public Subject Subject { get; set; }
public Curriculum Curriculum { get; set; }
}
List<Wrapper> YourMethodName(...)
{
...
{
var v = (from a in dc.Subjects
from b
in dc.Curricula
.Where(o => a.SubjectCode == o.CourseCode)
.DefaultIfEmpty()
where
a.SubjectCode.Contains(search) ||
a.SubjectName.Contains(search) ||
a.Curriculum.DescriptiveTitle.Contains(search) ||
a.Schedule.Contains(search) ||
a.Instructor.Contains(search) ||
a.Room.Contains(search)
select new Wrapper { Subject = a, Curriculum = b});
totalRecord = v.Count();
v = v.OrderBy(x => x.Curriculum.Year).ThenBy(x => x.Curriculum.Sem);
return v.ToList();
}