Как определить тип возврата в функции с LINQ? - PullRequest
1 голос
/ 18 мая 2009

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

У меня есть продукты, и я возвращал всю информацию или один продукт за раз.

как вы можете видеть в моей функции, определенной ниже.

public static Products GetProducts(int pid) 
{
    var pro = from p in context.Products
              select p;

    if(pid > 0)
        pro =  pro.where(p => p.ProductID ==pid)

    return (Products)p;
}

проблема в том, что это дает мне ошибку приведения. как вы видите, то, чего я хочу достичь, основано на моих параметрах, которые дают мне набор результатов. некоторое время куча продуктов и некоторое время один продукт. я новичок в linq, поэтому любая помощь будет оценена.

Ошибка Невозможно привести объект типа 'System.Data.Objects.ObjectQuery`1 [TTDCore.Theatres]' к типу "TTDCore.Theatres"

когда я связываю его с gridview. вот код

Products p = Class1.GetProducts(0);

GridView1.DataSource = p;
GridView1.DataBind();

Ответы [ 2 ]

6 голосов
/ 18 мая 2009

Вы хотите вернуть IEnumerable<Product>, который представляет повторяемый (или перечисляемый) объектов типа Product. В целом, LINQ основан на этом универсальном типе, поэтому обычно это то, что вы хотите вернуть в результате запроса.

Я считаю, что ваш код должен быть исправлен, чтобы он выглядел примерно так:

public static IEnumerable<Products> GetProducts(int pid) 
{
    var pro = from p in context.Products
              select p;

    if(pid > 0)
        pro =  pro.Where(p => p.ProductID == pid)

    return pro;
}

Дайте мне знать, если вы имели в виду что-то еще в своем вопросе. Я не был полностью уверен, что именно вы искали.

0 голосов
/ 18 мая 2009

Мне нравится быть явным с запросами Linq и лямбдами. Я предлагаю определить вашу функцию как List (или IEnumerable ), а затем добавить .ToList () к вашему оператору where. Я предполагаю, что тип Products - это какая-то коллекция?

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