簡體   English   中英

使用Linq連接2個表以作為列表返回

[英]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而您返回的是匿名類型列表。 如果需要返回同時包含SubjectCurriculum的對象列表,則需要更改方法的簽名並制作一個包裝這兩個方法的單獨類(除非您要使用成對的鍵值配對集合或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM