LINQ-to-sql + C #. Получить только некоторые столбцы из таблицы в сетку - PullRequest
1 голос
/ 09 ноября 2009

Я пытаюсь получить некоторые данные и вставить их в сетку. Но я, должно быть, делаю что-то не так, поскольку могу выбрать только один столбец. Если я попытаюсь получить как имя, так и фамилию, они будут просто вставлены в один и тот же тд в виде сетки.

На данный момент метод:

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

Метод, размещенный здесь, находится на бизнес-уровне и будет вызываться из веб-сервера, который будет возвращать результат в веб-интерфейс, где результат будет привязан к сетке, как это показано:

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

---------- (конец оригинального вопроса) --------------------

Продолжение ответов: Это то, что я сейчас строю на основе входных данных. Это все еще не работает. Из aspx, где я пытаюсь установить источник данных для gridview, появится сообщение об ошибке. Что-то со ссылкой, которая нужна. Но при попытке создать его я не могу из-за цикла в ссылках ...

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 () вызывается из веб-службы:

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

И веб-сервис вызывается из 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. Андерс

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Вы не можете вернуть анонимный тип из вашей функции, поэтому вы не можете получить несколько столбцов таким образом.

Вам нужно будет сделать что-то подобное, когда вы создадите тип, содержащий результаты вашего запроса (несколько столбцов), чтобы вы могли вернуть их из функции.

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; };
}
0 голосов
/ 09 ноября 2009

Попробуйте создать анонимный тип в вашем запросе:

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

Однако, как писал Джейсон Пуньон, вы не можете возвращать анонимные типы из вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...