2012-12-06 200 views
0

我我查詢了一些東西一樣,LINQ查詢在for循環

var currentUsrId = Convert.ToInt16(Membership.GetUser().ProviderUserKey); 
var Ids = Context.audits 
      .Where(i => i.usr_id == currentUsrId) 
      .Select(i => new 
       { 
         profile_id = i.profile_id 
       }).ToArray(); 

for (var m=0; m < (Ids.Length); m++) 
{ 
    var Query = Context.audits 
       .Where(j => j.usr_id == currentUsrId && j.profile_id == Convert.ToInt16(Ids[m].profile_id)) 
       .Select(j => j.profile_id).Count(); 

    var TotalQuery = Context.audits 
        .Where(i => i.usr_id == currentUsrId) 
        .Select(i => new 
        { 
         Id = currentUsrId, 
         count = Query 
        }).Distinct().ToArray(); 

    //return json(TotalQuery,JsonRequestBehavior.AllowGet); 
    ----strucked at this part----- 
} 

我想用for循環發送記錄,我如何發送這些值strucked,如果我使用返回JSON的循環中,循環執行一次

+0

嗯,是的,如果你有一個return語句,它會從方法返回。目前還不清楚你想要退回的東西。一個列表也許? –

+0

爲每次迭代,我必須將「TotalQuery」值添加到數組或一些事情,並在循環後,我不得不寫回報statement.how添加值我建議使用列表和 – charan

+1

和只需在循環的每次迭代中添加它,然後在循環後返回*。請注意,這與LINQ確實沒有任何關係。 –

回答

0

嘗試是這樣的:

List<T> queries = new List<T>(); 

for (var m=0; m < (Ids.Length); m++) 
{ 
    var Query = Context.audits 
       .Where(j => j.usr_id == currentUsrId && j.profile_id == Convert.ToInt16(Ids[m].profile_id)) 
       .Select(j => j.profile_id).Count(); 

    var TotalQuery = Context.audits 
        .Where(i => i.usr_id == currentUsrId) 
        .Select(i => new 
        { 
         Id = currentUsrId, 
         count = Query 
        }).Distinct().ToArray(); 

    queries.add(TotalQuery); 
} 

return json(queries,JsonRequestBehavior.AllowGet);