«System.Data.DataRowCollection» не содержит определения «Длина» - PullRequest
1 голос
/ 17 октября 2011

Я новичок и у меня есть основной вопрос.Я недавно добавил этот код в свой метод

    if (dt.Rows.Length > 0)

Однако я возвращаю ошибку: «System.Data.DataRowCollection» не содержит определения «Длина» и не имеет метода расширения «Длина», принимающего первыйаргумент типа «System.Data.DataRowCollection» может быть найден (вы пропустили директиву using или ссылку на сборку?), я не говорю, чтобы это было написано для меня (если вы не хотите :),), но если кто-то может указать мнев правильном направлении, это было бы здорово и удачи для вас.Вот некоторый код, чтобы помочь.

     using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Configuration;

public class Database
{
    private string serverPCICUSTOM, serverPCI;
    private string ConnectionStringPCICUSTOM, ConnectionStringPCI;
    private SqlConnection connectionPCICUSTOM, connectionPCI;
    private string trackingNumber;
    private string soptype;
    private string orderNumber;

         public bool UpdateOrderToShipped(string order)
    {
        orderNumber = order;
        string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
        string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
        SqlCommand comm = new SqlCommand(statement, connectionPCI);
        comm.Parameters.Add("SOPNUMBE", orderNumber);
        try
        {
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
        }
        catch(Exception e)
        {

            comm.Connection.Close();
            KaplanFTP.errorMsg = "Database error: " + e.Message;
        }

        statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
        comm.CommandText = statement;
        SqlDataAdapter da = new SqlDataAdapter(comm);
        DataTable dt = new DataTable();
        da.Fill(dt);
        if (dt.Rows.Length > 0)      //error here
        {
        comm.Connection.Open();
            soptype = dt.Rows[0]["SOPTYPE"].ToString();
        }
        else
        {
        }

            return true;
    }

Ответы [ 5 ]

2 голосов
/ 17 октября 2011

Проверьте это:

использовать

if (dt.Rows.count> 0)

вместо

if (dt.Rows.length> 0)

Надеюсь, мой ответ поможет вам решить вашу проблему.

1 голос
/ 17 октября 2011

MSDN ваш самый большой союзник здесь.

DataRowCollection.Count

1 голос
/ 17 октября 2011
1 голос
/ 17 октября 2011

Вы должны попробовать:

if (dt.Rows.Count > 0)
1 голос
/ 17 октября 2011

Используйте Count, а не Length.

if (dt.Rows.Count > 0)

Вообще говоря, когда у вас есть коллекция, свойство называется Count, чтобы получить количество элементов.,Это верно для многих типов коллекций, включая DataRowCollection, List, Dictionary или любой другой, который реализует интерфейс ICollection<T> (или неуниверсальный эквивалент).Это связано с тем, что свойство Count поступает прямо из интерфейса.

Исключением являются массивы.Количество элементов в массиве можно получить с помощью Length.

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