2013-06-13 24 views
1

我的數據庫表上的碼值看起來像這樣C#掌握的λ列值,並宣讀背後

enter image description here

我試圖檢索指定fileurl在CRUD類文件是這樣的:

public IList<string> GetSorted(int listAct) 
     { 
      IList<Model.story> lstImages = context.stories.ToList(); 
      return lstImages.Where(c => c.ActivityID == listAct) 
          .Select(a => a.FileURL) 
          .ToList(); 
     } 

我在做對吧? (對此是新的)

然後在我的aspx中,我嘗試顯示這樣的值;

protected void btnSort_Click1(object sender, EventArgs e) 
    { 
     if (dropListActivity.SelectedIndex > 0)// drop down list 
     { 
        string imgList = daoStory.GetSorted(Convert.ToInt32(dropListActivity.SelectedItem.Value)).ToString(); 

      Response.Write(imgList); 

     } 
    } 

基本上下拉列表顯示activityID 1或2只,當我選擇1和點擊的排序按鈕時,將顯示的「1」指定fileurl和,如果我選擇2,它將顯示的FileURL '2'等等從上面的數據庫表中。但是,它現在顯示System.Collections.Generic.List`1 [System.String]而不是FileURL,我想顯示數據庫表中所述的FileURL,請幫助感謝。

回答

2

首先,調用ToList將導致從數據庫中檢索所有記錄並進行處理。當你需要的只是一條記錄時,這是相當大的資源浪費。我建議寫你的DAO方法是這樣的:

public string GetFileUrl(int actId) 
{ 
    return context.stories.First(c => c.ActivityID == actId).FileURL; 
} 

然後,我想你想用這樣的:

protected void btnSort_Click1(object sender, EventArgs e) 
{ 
    if (dropListActivity.SelectedIndex > 0)// drop down list 
    { 
     var actId = Convert.ToInt32(dropListActivity.SelectedItem.Value); 
     var imageUrl = daoStory.GetFileUrl(actId); 

     Response.Write(imageUrl); 
    } 
} 

此方法假定你將只對每一個FileUrlActivityId。如果情況並非如此,則可以輕鬆修改DAO代碼以返回IEnumerable<string>並使用Where代替First,但是問題中沒有足夠的信息來確定按鈕單擊處理程序應該如何處理結果。

+0

是的,我有一個fileurl爲每個activityid。奇怪的是,它不會返回fileurl字符串,而是顯示名爲「Model.Story」的命名空間。實際上,我將以網格視圖形式顯示圖像列表,所以按鈕是根據下拉列表的選擇對列表進行排序。 – user2376998

+0

確實daoStory.GetFileURL(actID)只獲取fileurl列嗎?我認爲它檢索整個單個記錄 – user2376998

+0

@ user2376998糟糕,抱歉。看到我更新的答案。 –

0

您正在從sort方法中傳回一個列表,但將其轉換爲後面代碼中的字符串。你必須以某種方式處理這個列表,並獲得你想要的任何元素的價值。