Linq Group by/Distinct与联接表

Linq Group by/Distinct与联接表,linq,join,group-by,distinct,Linq,Join,Group By,Distinct,我计划联接2个表,并获得language列的不同值。我应该如何在Linq中实现这一点?我尝试添加“组”,但没有运气。此外,我还想选择s值和r不同的语言值 我的代码: public ActionResult QuestionLink(int Survey_ID) { var query = from r in db.SURV_Question_Ext_Model join s in db.SURV_Quest

我计划联接2个表,并获得language列的不同值。我应该如何在Linq中实现这一点?我尝试添加“组”,但没有运气。此外,我还想选择s值和r不同的语言值

我的代码:

 public ActionResult QuestionLink(int Survey_ID)
        {
            var query = from r in db.SURV_Question_Ext_Model
                        join s in db.SURV_Question_Model
                        on r.Qext_Question_ID equals s.Question_ID
                        where s.Question_Survey_ID == Survey_ID
                        group r.language << this is not work **
                        select r;

            return PartialView(query.ToList());
        } 
public ActionResult QuestionLink(内部调查\u ID)
{
var query=从db.SURV\u Question\u Ext\u模型中的r开始
在db.SURV_Question_模型中加入s
关于r.Qext_Question_ID等于s.Question_ID
其中s.Question\u Survey\u ID==Survey\u ID
组r.语言您可以这样做:

var query = from r in db.SURV_Question_Ext_Model
                        join s in db.SURV_Question_Model
                        on r.Qext_Question_ID equals s.Question_ID
                        where s.Question_Survey_ID == Survey_ID
                        group new {r, s} by r.language into rg
                        select rg.Key;
您可以这样做:

var query = from r in db.SURV_Question_Ext_Model
                        join s in db.SURV_Question_Model
                        on r.Qext_Question_ID equals s.Question_ID
                        where s.Question_Survey_ID == Survey_ID
                        group new {r, s} by r.language into rg
                        select rg.Key;
您可以这样做:

var query = from r in db.SURV_Question_Ext_Model
                        join s in db.SURV_Question_Model
                        on r.Qext_Question_ID equals s.Question_ID
                        where s.Question_Survey_ID == Survey_ID
                        group new {r, s} by r.language into rg
                        select rg.Key;
您可以这样做:

var query = from r in db.SURV_Question_Ext_Model
                        join s in db.SURV_Question_Model
                        on r.Qext_Question_ID equals s.Question_ID
                        where s.Question_Survey_ID == Survey_ID
                        group new {r, s} by r.language into rg
                        select rg.Key;
这就是中所称的
DistinctBy
。但是如果该方法适用于
IEnumerable
,则不能在EF查询中使用它。但可以使用相同的方法:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
            group new { r, s } by r.language into grp
            select grp.FirstOrDefault();
但我想知道这是否真的是您想要的。结果取决于数据库恰好返回的语言顺序。我认为您应该为特定语言添加谓词并删除分组:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model
            on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
               && r.language == someVariable
            select new { r, s };
这就是中所称的
DistinctBy
。但是如果该方法适用于
IEnumerable
,则不能在EF查询中使用它。但可以使用相同的方法:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
            group new { r, s } by r.language into grp
            select grp.FirstOrDefault();
但我想知道这是否真的是您想要的。结果取决于数据库恰好返回的语言顺序。我认为您应该为特定语言添加谓词并删除分组:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model
            on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
               && r.language == someVariable
            select new { r, s };
这就是中所称的
DistinctBy
。但是如果该方法适用于
IEnumerable
,则不能在EF查询中使用它。但可以使用相同的方法:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
            group new { r, s } by r.language into grp
            select grp.FirstOrDefault();
但我想知道这是否真的是您想要的。结果取决于数据库恰好返回的语言顺序。我认为您应该为特定语言添加谓词并删除分组:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model
            on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
               && r.language == someVariable
            select new { r, s };
这就是中所称的
DistinctBy
。但是如果该方法适用于
IEnumerable
,则不能在EF查询中使用它。但可以使用相同的方法:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
            group new { r, s } by r.language into grp
            select grp.FirstOrDefault();
但我想知道这是否真的是您想要的。结果取决于数据库恰好返回的语言顺序。我认为您应该为特定语言添加谓词并删除分组:

var query = from r in db.SURV_Question_Ext_Model
            join s in db.SURV_Question_Model
            on r.Qext_Question_ID equals s.Question_ID
            where s.Question_Survey_ID == Survey_ID
               && r.language == someVariable
            select new { r, s };

你期望得到什么结果?你期望得到什么结果?你期望得到什么结果?你期望得到什么结果?谢谢你的反馈。是否可以选择2个值,即select grp.FirstOrDefault和r?对不起@gert arnold,我的错误,我也要选择s。可能类似于select new{grp.FirstOrDefault(),s}?另一方面,如果
SURV\u Question\u Ext\u Model
SURV\u Question\u Model
与导航属性相关,则可能会有一些改进。感谢您的反馈。是否可以选择2个值,即select grp.FirstOrDefault和r?对不起@gert arnold,我的错误,我也想选择s。可能是se之类的选择新的{grp.FirstOrDefault(),s}?另一方面,如果
SURV\u Question\u Ext\u Model
SURV\u Question\u Model
与导航属性相关,则可能会有一些改进。感谢您的反馈。是否可以选择2个值,即select grp.FirstOrDefault和r?对不起@gert arnold,我的错误,我也想选择s。可能是se之类的选择新的{grp.FirstOrDefault(),s}?另一方面,如果
SURV\u Question\u Ext\u Model
SURV\u Question\u Model
与导航属性相关,则可能会有一些改进。感谢您的反馈。是否可以选择2个值,即select grp.FirstOrDefault和r?对不起@gert arnold,我的错误,我也想选择s。可能是se之类的另一方面,如果
SURV\u Question\u Ext\u Model
SURV\u Question\u Model
与导航属性相关,则可能会有一些改进。