2009-11-09 67 views
1

我嘗試拉取一些數據並將其插入到gridview中。但由於我只能選擇一個列,所以我一定在做錯事。如果我嘗試獲取名字和姓氏,那麼他們將被插入到gridview中的相同td中。LINQ到SQL + C#。僅從表格中檢索一些列到gridview

方法到目前爲止是:

public string[] ShowName() 

    { 
     LinqToEbuboo_20DataContext db = new LinqToEbuboo_20DataContext(); 
     var myusers = from u in db.db_users 
      where u.uid > 13 
      select u.firstname; 

      return myusers.ToArray(); 
    } 

我用C#和LINQ(以及該緣故GridView的),所以它可能是一個相當簡單的問題相當陌生。

它是建立這樣的:

1) aspx (frontend) 
2) webservice 
3) C# (business logic) 
4) database 

張貼在這裏的方法是在業務層和將來自將結果返回到的結果必將像一個GridView前端的webservive叫這樣的:

GridView1.DataSource = s.showemail(); 
GridView1.DataBind(); 

----------(原題結束)--------------------

關注關於答案: 這就是我現在基於輸入建立。它仍然不起作用。從我嘗試爲gridview設置數據源的aspx中,將顯示一個錯誤。有需要的參考。

[WebMethod] 
    public PersonName[] ws_listUsers() 
    { 
    User u = new User(); 
    return u.ListStrangers(); 
    } 

而且:但是,試圖創建它,我不能因引用等的循環......

user.cs

namespace Ebuboo 
{ 
    public class User 
    { 
    public PersonName[] ListStrangers() 
    { 
     LinqToEbuboo_20DataContext db = new LinqToEbuboo_20DataContext(); 
     var myusers = from u in db.db_users 
     where u.uid > 12 
     select new PersonName { FirstName = u.firstname, LastName = u.lastname }; 
     return myusers.ToArray(); 
     } 
    } 
    } 
    public class PersonName 
    { 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    } 
} 

的ListStrangers(時)從一個Web服務被稱爲web服務從aspx調用,試圖將結果綁定到gridview:

// create instance of webservice 
    Ebuboo_WS.Service1 s = new Ebuboo_WS.Service1(); 

    // Bind and output result in Gridview 
    GvListUsers.DataSource = s.ws_listUsers(); 
    GvListUsers.DataBind(); 

Br。 Anders

+0

如果你「對C#和LINQ(和gridviews都不太熟悉)」,爲什麼不去購買一本書或者閱讀MSDN文檔? – 2009-11-09 13:19:36

+1

嗨。我得到了Jesse Liberty編寫的「Programming C#3.0」。我全職使用Linux服務器上的php,但剛開始研究微軟技術。 C#是唯一的新事物。大多數都是新的,比如C#,LINQ,.NET框架和Visual Studio。對於一個人來說,只需要一口氣就能掌握和理解。但是我很好,只有在遇到困難時才提問。 – Tillebeck 2009-11-09 14:12:25

+0

看來我不能只是返回PersonName []。我試圖在我的問題中寫下我是如何做到的。如果你可以在它的錯誤,我會apreciate它。 – Tillebeck 2009-11-11 11:50:41

回答

1

你不能從你的函數返回anonymous type,所以你不能以這種方式獲取多個列。

您需要在創建一個保存查詢結果的類型(多列)時做類似的事情,以便您可以從函數中返回它們。

public PersonName[] ShowName() 
{ 
    LinqToEbuboo_20DataContext db = new LinqToEbuboo_20DataContext(); 
    var myusers = from u in db.db_users 
        where u.uid > 13 
        select new PersonName { FirstName = u.firstname, LastName = u.lastname }; 
    return myusers.ToArray(); 
} 

public class PersonName { 
    public string FirstName { get; set; }; 
    public string LastName { get; set; }; 
} 
+1

謝謝。我已經做了一些閱讀並回來了Visual Studio。我可能做錯了。我有一個名爲user.cs的文件,其中有一個用戶類,後面跟着您的PersonName類和get/set。在用戶類中,我使用返回PersonName []的LINQ方法。它是否正確?我問,因爲我試圖將數據綁定到gridview時出錯(錯誤類型'Ebuboo_BL.PersonName'是在未引用的程序集中定義的。您必須添加對程序集'Ebuboo_BL,Version = 1.0.0.0的引用,Culture = neutral,PublicKeyToken = null'....) – Tillebeck 2009-11-09 14:53:57

0

嘗試在您的查詢中創建一個匿名類型:

LinqToEbuboo_20DataContext db = new LinqToEbuboo_20DataContext(); 
var myusers = from u in db.db_users 
    where u.uid > 13 
    select new { u.firstname, u.lastname }; 

然而,賈森Punyon寫道,你不能從你的方法返回匿名類型。