2011-05-21 36 views
0

您好,我正在尋找一些幫助,如何將行添加到現有的LINQ對象。在下面的控制器方法中,我有兩個結果集,我正在循環網站,並且希望將記錄添加到Sites對象中每個記錄的「結果」對象。添加記錄到一個LINQ對象(concat)從另一個值取得值

我試過CONCAT等,但沒有得到任何地方,剛需的小例子來協助,提前千恩萬謝,J

public IQueryable<UsersToSite> FindAllUsersToSites(int userId,SystemType obj) 
{ 

    var results = (from usersToSite in this._db.UsersToSites 
      where usersToSite.UserId == userId && 
      usersToSite.SystemTypeId == obj 
      orderby usersToSite.Site.SiteDescription 
      select usersToSite); 

    // Now for each remaining Site append a record thats not physically in the database. From the view the user will be able to click these records to ADD new 
    // I'll then build in a search 
    var sites = (from site in this._db.Sites 
       where !(from o in _db.UsersToSites where (o.UserId == userId && o.SystemTypeId == obj) select o.SiteId).Contains(site.SiteId) 
      orderby site.SiteDescription 
      select site); 

    foreach (var site in sites) 
    { 

     // HERE I want to create the new ROW in results object 
     //results = new[results] { new { UsersToSiteId = null, AccessTypeId = null } }.Concat(sites); 

      //SiteId=site.SiteId, 
      //UsersToSiteId = 0, 
      //AccessTypeId = 0, 
      //UserId = userId 


    } 

    return results; 
} 

回答

0

我不認爲你可以,如果你想有保可查詢。 但是,如果兌現與ToList(結果),那麼你可以:

var sites = (from site in this._db.Sites 
       where !(from o in _db.UsersToSites where (o.UserId == userId && o.SystemTypeId == obj) select o.SiteId).Contains(site.SiteId) 
       orderby site.SiteDescription 
       select site) 
       .ToList(); 
sites.Add(new Site { UsersToSiteId = null, etc }); 

如果是LINQ到對象,你可以做Concat
這裏的問題,它不能做Concat LINQ查詢將有一個部分從SQL和另一個從對象。您需要首先實現結果,然後將其轉換爲對象。

+0

這似乎是工作,但現在的結果對象是TOLIST,我試圖返回一個IQueryable 對象。你知道我怎麼可以將列表對象的結果轉換回ADD – John 2011-05-21 09:13:28

+0

@John - 你可以做'return sites.AsQueryable()',但如果你真的想這樣做,你需要檢查你的代碼。 – 2011-05-21 09:15:28