LINQ-to-sql + C#。仅检索从表到gridview的一些列

时间:2009-11-09 13:14:34

标签: c# linq linq-to-sql

我尝试提取一些数据并将其插入到gridview中。但我必须做错事,因为我只能选择一个列。如果我尝试同时获取名字和姓氏,那么它们将被插入到gridview中的相同td中。

到目前为止的方法是:

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(以及网格视图)都很不熟悉,所以这可能是一个相当简单的问题。

它是这样构建的:

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

此处发布的方法位于Business Layer中,将从webservive调用,该结果将结果返回到前端,结果将绑定到gridview,如下所示:

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

----------(原始问题的结尾)--------------------

对答案的跟进: 这就是我现在基于输入构建的内容。它仍然无法正常工作。从我尝试为gridview设置数据源的aspx中将显示错误。需要引用的东西。但是当试图创建它时,我不能因为引用中的循环......

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; }
  }
}

从Web服务调用ListStrangers():

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

从尝试将结果绑定到gridview的aspx调用web服务:

  // 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();

溴。安德斯

2 个答案:

答案 0 :(得分: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 :(得分: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 };

然而,正如Jason Punyon写的那样,你不能从你的方法中返回匿名类型。