2011-04-14 40 views
0

我有一個網頁,我在這裏給USER提供寫作筆記的選項。現在,當網頁檢查到USER是abc時,它會從MEMO表中拉出該筆記。如何從LINQ2SQL查詢中獲取文本?

這是我在Page_Load中的代碼():

using (EntityMemoDataContext em = new EntityMemoDataContext()) 
      { 
       int getEntity = Int16.Parse(Session["EntityIdSelected"].ToString()); 
       var showMemo = from r in em.EntityMemoVs_1s 
           where r.EntityID == getEntity 
           select r.Memo; 

       tbShowNote.Text = String.Join(@"<br />", showMemo); 
      } 

tbShowNote正顯示出我的價值是這樣的:

test<br />test1<br />test1<br />test4<br />test4 

而且我希望它是這樣的:

測試
Test1
Test2 ...

tbShowNote是一個TextBox!

+1

備註屬性如何顯示?它是一組東西,集合還是另一個對象/實體? – Damb 2011-04-14 21:32:33

+0

它是EntityMemoVs_1s中的一列:MSSQL2008中的nvarchar(500)。 – 2011-04-14 21:39:34

+0

不在showMemo.First()。「ToString();」)中的「First()」。只給你第一個價值? (不知道,所以我問,而不是回答...) – 2011-04-14 21:42:44

回答

1

你只要求第一個備忘錄,所以這就是你回來的。如果你想將其與每一個在HTML它自己的行列舉,你可以這樣做:

using (EntityMemoDataContext em = new EntityMemoDataContext()) 
    { 
     int getEntity1 = Int16.Parse(Session["EntityIdSelected"].ToString()); 
     var showMemo = from r in em.EntityMemoVs_1s 
         where r.EntityID == getEntity1 
         select new 
         { 
          r.Memo 
         }; 
     tbShowNote.Text = String.Join(@"<br />", showMemo); 
    } 

關鍵外賣是,如果r.Memo是字符串類型的,那麼你執行LINQ查詢給你回IQueryable<string>。請稍後決定是否要將該列表弄平。

編輯: Equiso取得了一個良好的觀察,你實際上返回一個匿名類型的IQueryable,不IQueryable<string>由於new { ... }語法。我想說的和我結合自己的答案,並運行它:

var showMemo = from r in em.EntityMemoVs_1s 
       where r.EntityID == getEntity1 
       select r.Memo; 

tbShowNote.Text = String.Join(@"<br />", showMemo); 
0

它看起來像你的showMemo是一個集合,然後你只是分配最高值?如果你把它們放在一個字符串中,那麼你需要將它們聚合在一起。

1

的問題是在你的LINQ查詢,你是你的包裹導致一個匿名類型的select一部分,這就是爲什麼當你調用ToString()你看到{ Memo = test }。你可能想要它是這樣的:

var showMemo = from r in em.EntityMemoVs_1s 
       where r.EntityID == getEntity1 
       select r.Memo; 

之後,showMemo將只包含字符串。