Заполните Gridview, используя запрос LINQ to DataSet с псевдонимом

Я получаю следующую ошибку.

Поле или свойство с именем 'P_ID' не найдено в выбранном источнике данных.

Я хочу связать Gridview с помощью LINQ в DataSet, У меня есть три стола, из которых я хочу их ID's, В запросе я использовал псевдонимы, но это дает мне ошибку, потому что псевдонимы не найдены.

это мой код

string filterSO = "SELECT " +
                         "P.ID AS P_ID, " +
                         "S.ID AS S_ID, " +                             
                         " RS.LASTNAMER | | ' ' | | RS.FIRSTNAMER AS ReferentName, " +
                         " RS.ID," +
                         " P.STATUSP" +
                        " FROM PLANNING P," +
                         " SHIPPING S," +                            
                         " REFERENT_SHIPPING RS" +                             
                       " WHERE S.ID_REFERENT = RS.ID(+)" +
                       " AND S.ID_PLANNING = P.ID" +
                       " ORDER BY P.ID DESC";
    using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["DBCS"].ToString()))
    {
        con.Open();
        OracleCommand cmd = new OracleCommand(filterSO, con);
        OracleDataAdapter da = new OracleDataAdapter(cmd);
        DataSet dss = new DataSet();
        da.Fill(dss, "office_all");
        Session["DATASET"] = dss;

        var officee_all = from xx in dss.Tables["office_all"].AsEnumerable()
                      select new guards
                      {
                          ID = Convert.ToInt32(xx["P_ID"]),
                          ID_S = Convert.ToInt32(xx["S_ID"]),                           

                          LASTNAME_R = xx["LASTNAMER"].ToString(),
                          FIRSTNAME_R = xx["ReferentName"].ToString(),
                          ID_R = Convert.ToInt32(xx["ID"]),
                          STATUSP = xx["STATUSP"].ToString()
                      };

        GridViewSOFirst.DataSource = officee_all.ToList();
        GridViewSOFirst.DataBind();

1 ответ

Решение

Поле или свойство с именем 'P_ID' не найдено в выбранном источнике данных

Сообщение не требует пояснений, это свойство недоступно в используемом вами классе, но, очевидно, вы пытаетесь привязать это свойство.

Так как вы выбираете этот столбец в SQL-запросе, но назначаете его свойству ID Вы должны связать это свойство вместо этого.

ID = Convert.ToInt32(xx["P_ID"])

Примечание: вы можете использовать дословный строковый литерал, это значительно упрощает написание SQL-запроса в C#. Я бы также предложил использовать настоящие /ansi соединения. Даже "Oracle рекомендует использовать синтаксис OUTER JOIN предложения FROM, а не оператор соединения Oracle".

string filterSO = @"SELECT
                     P.ID AS P_ID,
                     S.ID AS S_ID,
                     RS.LASTNAMER | | ' ' | | RS.FIRSTNAMER AS ReferentName, 
                     RS.ID,
                     P.STATUSP
                    FROM PLANNING P,
                     SHIPPING S,
                     REFERENT_SHIPPING RS
                   WHERE S.ID_REFERENT = RS.ID(+)
                   AND S.ID_PLANNING = P.ID
                   ORDER BY P.ID DESC";
Другие вопросы по тегам