PDA

View Full Version : عدم دریافت آرایه و خطای Index was outside..........



bitcob589
پنج شنبه 08 اسفند 1392, 15:22 عصر
سلام
با استفاده از دستورات زیر در نظر دارم به ازای هر رکود خوانده شده در یک آرایه ذخیره و در یک لیبل نمایش دهم اما زمانی که رکود خوانده شده در یک آرایه ذخیره کنم خطای زیر نمایش داده می شود


Index was outside the bounds of the array

به چه علتی امکان ذخیره رکود خوانده در آرایه وجود ندارد

کدها به صورت زیر است

private void button1_Click(object sender, EventArgs e) {
IQueryable<menusite> one = getid();
string textquery = string.Empty;
int x = one.Count();
for (int i = 0; i < x; i++)
{
textquery += string.Format("name{0}url{1}", one.FirstOrDefault().name[i].ToString(), one.FirstOrDefault().url[i].ToString());
}
label1.Text = textquery;


}
public IQueryable<menusite> getid()
{
test14Entities sa = new test14Entities();
var gg = sa.menusites.Where(i => i.parentid == 0);
return gg;
}

خطا از خط زیر گرفته می شود

textquery += string.Format("name{0}url{1}", one.FirstOrDefault().name[i].ToString(), one.FirstOrDefault().url[i].ToString());
علت خطا چیست

اگر نیاز است پروژه را بگذارم

Mahmoud.Afrad
پنج شنبه 08 اسفند 1392, 16:13 عصر
ساختار menusite به چه صورته؟ چرا FirstOrDefault استفاده کردی؟

bitcob589
پنج شنبه 08 اسفند 1392, 16:25 عصر
ساختار
menusite به صورت زیر است

فیلد Id از نوع int کلید اصلی جدول
فیلد name و url از نوع nvarchar
فیلد parentid از نوع int
اسکریپت دیتابیس به صورت زیر است
SET QUOTED_IDENTIFIER OFF;

GO
USE [test14];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO


-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------




-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------


IF OBJECT_ID(N'[dbo].[menusites]', 'U') IS NOT NULL
DROP TABLE [dbo].[menusites];
GO


-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------


-- Creating table 'menusites'
CREATE TABLE [dbo].[menusites] (
[Id] int IDENTITY(1,1) NOT NULL,
[name] nvarchar(max) NOT NULL,
[parentid] int NOT NULL,
[url] nvarchar(max) NOT NULL
);
GO


-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------


-- Creating primary key on [Id] in table 'menusites'
ALTER TABLE [dbo].[menusites]
ADD CONSTRAINT [PK_menusites]
PRIMARY KEY CLUSTERED ([Id] ASC);
GO


-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------






چرا FirstOrDefault استفاده کردی
خواستم به اطلاعات درون فیلدها دسترسی پیدا کنم اگر روشی که گفتم اشتباه است صورت صحیح بفرمایید

Mahmoud.Afrad
پنج شنبه 08 اسفند 1392, 17:02 عصر
با اندیس دسترسی داشته باش:
textquery += string.Format("name{0}url{1}", one[i].name, one[i].url);

bitcob589
پنج شنبه 08 اسفند 1392, 17:37 عصر
ساختار menusite به چه صورته؟ چرا FirstOrDefault استفاده کردی؟
چگونه می شود کدهای پست 1 به صورتی نوشت که از
FirstOrDefault استفاده نشود

با توجه به اینکه کدی که در پست 4 است از FirstOrDefault استفاده نشده است

Mahmoud.Afrad
پنج شنبه 08 اسفند 1392, 17:59 عصر
به همون صورت که در پست 4 گذاشتم با اندیس میتونی دسترسی داشته باشی. نیازی به FirstOrDefault نیست.

bitcob589
پنج شنبه 08 اسفند 1392, 18:34 عصر
با اندیس دسترسی داشته باش:
textquery += string.Format("name{0}url{1}", one[i].name, one[i].url);
بعد از
i] one]
نام هیچ یک از فیلدها نمایش داده نمی شود مثل name و url ,....

اگر نیاز پروژه را بگذارم