【发布时间】:2019-05-04 16:21:22
【问题描述】:
我有两张桌子Profile 和CourseList。
Profile表:
ID | Name | CourseId
-----+--------+----------
1 | Zishan | 1,2
2 | Ellen | 2,3,4
CourseList表:
courseid | coursename
---------+--------------
1 | java
2 | C++
3 | oracle
4 | dot net
在这里,我加入两个表并获得结果,这将导致特定 ID 的“查看”页面...
如果我在我看来调用 ID = 1:
姓名:紫山,
课程名称:java,C++
如果我在我看来调用 ID = 2:
姓名:艾伦,
课程名称:java,C++,oracle。
所以我在我的控制器中编写了这个 Linq 查询:
var account = db.Profile.Where(x => x.PId == pid).FirstOrDefault();
string CourseIDS = string.Join(",",account.CourceId);
var courselist = (from p in db.profile
join co in db.CourceList on p.CourceId equals co.courseId
.ToString() into co1 from co2 in co1.Where(x =>
LanguageIDS.Contains(x.courseId.ToString()))
select new ViewProfileVM
{
courseName = string.Join(",", co2.courseName)
}).FirstOrDefault();
ViewBag.courselist = courselist;
然后我通过 ViewBag 来查看和显示结果.....
请帮助我,linq 查询不起作用,将来我想像 CourceList 一样添加加入 LanguagesList 和 CountryList 所以请建议我为这个问题提供一个简单的解决方案..
谢谢,
【问题讨论】:
-
首先,这是对关系数据库的不正确使用 - 您的个人资料表中不应该有一个逗号分隔的课程列表,而是有一个包含个人资料 ID 和课程 ID 的链接表.此外,“不工作”可能意味着一百万件事 - 请更具体。
-
您的
LanguagesList和CountryList将如何与Profile相关联?就像你的Profile和CourseList与CourseId相关... -
在我的应用程序中,用户需要从下拉列表中选择一些课程列表和语言列表,我保存在数据库中的所选列表以逗号分隔,如 1,2,3...等
-
@Haree,我想你不明白我的意思......让我们说 -> 如果你从下拉列表中选择国家,那么这些值将与配置文件的国家列表逗号分隔值匹配.然后,如果您从下拉列表中选择语言,那么这些值将在配置文件中匹配。因为 profile 只包含 countryids 而没有 languageid 列
标签: c# asp.net-mvc linq model-view-controller