c# - C# mvc 中的 IEnumerable<SelectListItem>

标签 c# linq ienumerable selectlistitem

我有两个表,Student (name, id, UniversityID) 和 Universities (Id, Name)。一个包含有关学生详细信息的信息,另一个包含有关大学的信息。在第一个表中,我存储了与 Universities.ID 匹配的 Student.UniversityID。大学显示为有关学生详细信息的下拉列表。

我的问题是,当我编辑一个特定的学生时,如何在添加学生详细信息(预选)的同时在之前的表格中选择 UniversityName。

到目前为止,我正在做的是像这样填充下拉列表

public ActionResult Edit(int? id)
{
    IEnumerable<SelectListItem> items = db.Universities
        .Select(c => new SelectListItem
        {
            Value = c.UniversityId.ToString(),
            Text = c.UniversityName.ToString(),
            Selected = true,
        });
    ViewBag.UniversityID = items;
}

我想最好的办法是根据以下条件在两个表之间进行连接

{select UniversityName from Universities Join Student where Student.UniversityID=Universities.ID}

知道如何使用 IEnumerable SelectListItem 在 Linq 中连接这两个表并选择符合此条件的 UniversityName 吗???

最佳答案

如果您使用的是 EntityFramework,则可以指定 ForeignKey 约束,在这种情况下,您可以这样做:

db.Students.Select(student => new {
    UniversityName = student.University.UniversityName
})

要添加 ForeignKey 约束,在您的 EntityFramework 数据实体中执行:

[Table("Student")]
public class Student
{
    [Key] public int Id { get; set; }
    public string Name { get; set; }
    public int UniversityId { get; set; }

    [ForeignKey("UniversityId")] public University University { get; set; }
}

关于c# - C# mvc 中的 IEnumerable<SelectListItem>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006474/

相关文章:

c# - C# 中具有未定义行为的代码

c# - MVC LINQ动态排序通过获取列类型

c# - 解析字符串以进行谓词

c# - 我可以引用当前 Select 对象中的属性吗?

c# - 如何从声明为 IEnumerable<T> 的方法/属性安全地返回 List<T>?

c# - 如何将当前用户特定的主题应用到共享点网站

c# - 带依赖注入(inject)的 Hangfire RecurringJob

c# - 跨线程编码异常(响应式(Reactive)扩展)

C# 简单列表显示的问题

c# - 如何创建自定义值注入(inject)以将我的实体映射到我的 View 模型?包括尝试