2013-06-04 80 views
-2

我有這樣的SQL語句:C#我的SQL語句lambda表達式

SELECT questionNo , ActivityID ,GROUP_CONCAT(CONCAT(Question, '[' , Answer , ']') 
SEPARATOR ' ')AS joined 
FROM question 
GROUP BY QuestionNo , ActivityID 
LIMIT 0,30 

但我使用實體框架,MySQL和我大部分的類文件的方法是λ,如何轉換這lambda表達式?

低於-------------

public IList<Model.question> GetList() 
    { 
     IList<Model.question> lstRecords = context.questions.ToList(); 
     return lstRecords.GroupBy(x => new { x.QuestionNo, x.ActivityID }).Select(g => new { QuestionNo = g.Key.QuestionNo, ActivityID = g.Key.ActivityID, joined = string.Join(" ", g.Select(i => i.QuestionContent + "[" + i.Answer + "]"))}); 

    } 

這是我想將它寫,如果我想獲得它的列表?它說不能將類型轉換爲ilist。

+0

會是什麼呢甚至*意味着*將其轉換爲「lambda表達式」?你的意思是* LINQ語法*?或者*使用lambdas *的LINQ操作?要麼...? –

+0

是linq使用lambda – user2376998

回答

3

試試下面

var result = question.GroupBy(x=>new{x.QuestionNo , x.ActivityID}) 
.Select(g=> new {QuestionNo= g.Key.QuestionNo, 
       ActivityID= g.Key.ActivityID, 
       joined = string.Join(" ", g.Select(i=>i.Question+ "[" + i.Answer +"]"))}) 
.Take(30); 

如果你想從方法返回這一點,你可以像下面

public class Question 
{ 
    public int QuestionNo {get;set;} //change the type accordingly 
    public string ActivityID {get;set;} //change the type accordingly 
    public string joined {get;set;} //change the type accordingly 
} 

創建新類和更改方法:

public IList<Question> GetList() 
{ 
    IList<Question> lstRecords = context.questions.GroupBy(x => new { x.QuestionNo, x.ActivityID }) 
     .Select(g => new Question(){ 
       QuestionNo = g.Key.QuestionNo, 
       ActivityID = g.Key.ActivityID, 
       joined = string.Join(" ", 
        g.Select(i => i.QuestionContent + "[" + i.Answer + "]"))}) 
     .Take(30) 
     .ToList(); 
} 
+0

thx爲你的時間和精力在幫助​​,e我得到這個錯誤,在當前上下文中x不存在。 – user2376998

+0

回答更新請檢查 – Damith

+0

您好,我已更新您的答案,並且出現了一些錯誤,請參閱上面的感謝之人。這是做到這一點的正確方法嗎? – user2376998