![](/img/trans.png)
[英]How to return a list of anonymous object in Linq to Sql on joining two tables
[英]Joining 2 Tables using Linq to return as list
這是我的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
問題不是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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.