ایجاد حلقه روی مدل و جدا کردن ایتم
سلام من یک کلاس مدل دارم به این صورت
public class Promise
{
[Key]
public Guid Mobayee_id { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
public string Field6 { get; set; }
public string Field7 { get; set; }
}
هر کدوم از این فیلد ها دارای مقدار مه با مارکتر ' ,' مثل (علی, محمد, رضا) که درField1 ذخیره شده
حلا مخوام با یک دستور این مقادیر جداد جدا کنم و داخل گرید نشون بدم
یعنی محتویات فیلدField1 بشه سه ستون در گرید بهمین شکل تا Field7 مکن این فیلد ها به 50 تا هم بشه
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
هدفتون از این طراحی عجیب چی هست؟
در این مدل چند ردیف رکورد قرار میگیره؟
اگر فقط یک رکورد داشته باشید قضیه حله
ابتدا رکورد همه فیلده را در یک متغیر بنام a بریزید
var a=list.Select(x=> new {all=x.Field1+x.Field2+....الی اخرین فیلد})
و رکوردهای بدست آمد همه ی این 7 فیلد
= "ali,reza,jafar,hoseyn,......";
string[] arr = a.Split(',');
foreach(var cha in arr)
{
Console.WriteLine(cha);
}
ولی
اگر فرض کنید 3 رکورد باشه :
Field1 در رکورد اول شامل علی حسن و حسین باشه
و در رکورد دوم باز فیلد Field1 اینبار رضا, حسن و حسین و محمد باشده
و رکورد سوم فیلد Field1 دارای 5 اسم باشه انوقت جمعا میشه 12 ستون
حالا فرض کنید این Filed 6 باقیمانده هم هرکدام 3 رکورد داشته باشه اونوقت نیاز به حلقه تو در تو هست و باز قابل حله ولی این که میشه مصیبت:گریه: با تعداد زیادی فیلد در گراید
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ali_md110
هدفتون از این طراحی عجیب چی هست؟
در این مدل چند ردیف رکورد قرار میگیره؟
اگر فقط یک رکورد داشته باشید قضیه حله
ابتدا رکورد همه فیلده را در یک متغیر بنام a بریزید
var a=list.Select(x=> new {all=x.Field1+x.Field2+....الی اخرین فیلد})
و رکوردهای بدست آمد همه ی این 7 فیلد
= "ali,reza,jafar,hoseyn,......";
string[] arr = a.Split(',');
foreach(var cha in arr)
{
Console.WriteLine(cha);
}
ولی
اگر فرض کنید 3 رکورد باشه :
Field1 در رکورد اول شامل علی حسن و حسین باشه
و در رکورد دوم باز فیلد Field1 اینبار رضا, حسن و حسین و محمد باشده
و رکورد سوم فیلد Field1 دارای 5 اسم باشه انوقت جمعا میشه 12 ستون
حالا فرض کنید این Filed 6 باقیمانده هم هرکدام 3 رکورد داشته باشه اونوقت نیاز به حلقه تو در تو هست و باز قابل حله ولی این که میشه مصیبت:گریه: با تعداد زیادی فیلد در گراید
تعداد ذخیره داخل هر فیلد مشخص و بیشتر از 3 عدد نمی باشد
یعنی تعداد فیلدField1 3عدد می باشد فیلد Field2 یک عدد و فیلد Field3 دوباره 3 عدد به همین ترتیب الی اخر
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
داخل یک دیتا تیبل هم بشه انتقال داد مشکل حل میکنه برام چون مخوام بفرستم سمت استمول جهت چاپ
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ali_md110
هدفتون از این طراحی عجیب چی هست؟
در این مدل چند ردیف رکورد قرار میگیره؟
اگر فقط یک رکورد داشته باشید قضیه حله
ابتدا رکورد همه فیلده را در یک متغیر بنام a بریزید
var a=list.Select(x=> new {all=x.Field1+x.Field2+....الی اخرین فیلد})
و رکوردهای بدست آمد همه ی این 7 فیلد
= "ali,reza,jafar,hoseyn,......";
string[] arr = a.Split(',');
foreach(var cha in arr)
{
Console.WriteLine(cha);
}
ولی
اگر فرض کنید 3 رکورد باشه :
Field1 در رکورد اول شامل علی حسن و حسین باشه
و در رکورد دوم باز فیلد Field1 اینبار رضا, حسن و حسین و محمد باشده
و رکورد سوم فیلد Field1 دارای 5 اسم باشه انوقت جمعا میشه 12 ستون
حالا فرض کنید این Filed 6 باقیمانده هم هرکدام 3 رکورد داشته باشه اونوقت نیاز به حلقه تو در تو هست و باز قابل حله ولی این که میشه مصیبت:گریه: با تعداد زیادی فیلد در گراید
بعدممکن شامل چمد ردیف باشم ولی قانون ذخیره هم ردیف ها یکی می باشد
ممکن 10 ردیف دشت باشیم که از دیتا بس خونده میشه
میشه کاریش کرد؟
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
یک مثال از نمونه داده های دیتابیس و کوئری که اجرا میکنید همراه نتیجه اش بزارید.
1 ضمیمه
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
یک مثال از نمونه داده های دیتابیس و کوئری که اجرا میکنید همراه نتیجه اش بزارید.
اطلاعات داخل دیتابیس اینطوری ذخیره میشه
ضمیمه 148791
وبا linqبا این دستور فراخوانی میشه
var sebdd2 = db.Promises.Where(x => x.MelkFor.MelkID == _MelkID).FirstOrDefault().id;
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
تعداد فیلدها ثابت هست یا نه؟ چرا چنین ساختاری برای ذخیره انتخاب کردید؟ تعداد مقادیر درون هر فیلد 3 تا بیشتر نمیشه؟
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
تعداد فیلدها ثابت هست یا نه؟ چرا چنین ساختاری برای ذخیره انتخاب کردید؟ تعداد مقادیر درون هر فیلد 3 تا بیشتر نمیشه؟
بله تعداد فیلد ها ثابت هست و مقدار درون هر فیلد هم نهایت 3 عدد و بیشتر نمیشه که ممکن کمتر بشه مثلا2 عدد یا 1 حتی
این یک برنامه جانبی و کمک برنامه اصلی که این شرکت دراه و من قرار برنامه جانبی بنویسم براشون
میشه کاریش کرد؟
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
سلام
بهتره به تعداد لازم پراپرتی ReadOnly به مدل اضافه کنی کارت راحت میشه.
public class Promise
{
[Key]
public Guid Mobayee_id { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
public string Field6 { get; set; }
public string Field7 { get; set; }
public string Field11 { get{return Field1.Split({','}).Length==1?Field1.Split({','})[0]:null;} }
public string Field12 { get{return Field1.Split({','}).Length==2?Field1.Split({','})[1]:null;} }
public string Field13 { get{return Field1.Split({','}).Length==3?Field1.Split({','})[2]:null;} }
public string Field71 { get{return Field7.Split({','}).Length==1?Field7.Split({','})[0]:null;} }
public string Field72 { get{return Field7.Split({','}).Length==2?Field7.Split({','})[1]:null;} }
public string Field73 { get{return Field7.Split({','}).Length==3?Field7.Split({','})[2]:null;} }
}
به ازای هر فیلد دوبار متد Split فراخوانی میشود که بهنه نیست خودت بهینه ش کن.فقط یه نمونه مثال جهت انجام کار هست و Field11 یعنی قسمت اول عمل Split فیلد Field1 و..
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ژیار رحیمی
سلام
بهتره به تعداد لازم پراپرتی ReadOnly به مدل اضافه کنی کارت راحت میشه.
public class Promise
{
[Key]
public Guid Mobayee_id { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public string Field5 { get; set; }
public string Field6 { get; set; }
public string Field7 { get; set; }
public string Field11 { get{return Field1.Split({','}).Length==1?Field1.Split({','})[0]:null;} }
public string Field12 { get{return Field1.Split({','}).Length==2?Field1.Split({','})[1]:null;} }
public string Field13 { get{return Field1.Split({','}).Length==3?Field1.Split({','})[2]:null;} }
public string Field71 { get{return Field7.Split({','}).Length==1?Field7.Split({','})[0]:null;} }
public string Field72 { get{return Field7.Split({','}).Length==2?Field7.Split({','})[1]:null;} }
public string Field73 { get{return Field7.Split({','}).Length==3?Field7.Split({','})[2]:null;} }
}
به ازای هر فیلد دوبار متد Split فراخوانی میشود که بهنه نیست خودت بهینه ش کن.فقط یه نمونه مثال جهت انجام کار هست و Field11 یعنی قسمت اول عمل Split فیلد Field1 و..
ممکن بیشتر توضیح بدید متوجه نشدم
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
برای هر بخش از رشته درون Filed1 سه Property اضافه شده (این Property ها ReadOnly هستند یعنی تو دیتابیس Map نمیشن فقط جهت دسترسی به بخشهای رشته درون Fileld1 استفاده میشوند)
چون شما بیان کردی تعداد فیلد ها محدود به 3 تا بیشتر نیست این روش جواب میده
البته بدون Property اضافه داخل مدل هم میتونی Field1 را موقع کویری به سه ستون تبدیل کنی
context.Promises.Select(c=>new{Field11=c.Field1.Sp lit({','})[0], Field12=c.Field1.Split({','})[1],Field13=c.Field1.Split({','})[2],.... });
1 ضمیمه
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ژیار رحیمی
برای هر بخش از رشته درون Filed1 سه Property اضافه شده (این Property ها ReadOnly هستند یعنی تو دیتابیس Map نمیشن فقط جهت دسترسی به بخشهای رشته درون Fileld1 استفاده میشوند)
چون شما بیان کردی تعداد فیلد ها محدود به 3 تا بیشتر نیست این روش جواب میده
یعنی یک مدل دیگه تعرف کنم بعنوان ویو که این مدل داخل اون Split کنم و هرجا خواستم حلا از اون مدل جدید استفائه کنم درست متوجه شدم؟
ضمیمه 148803
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نه متوجه نشدی .همان مدل Promise چند تا Property اضافه شده مدل دیگه ای لازم ندارد.
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ژیار رحیمی
نه متوجه نشدی .همان مدل Promise چند تا Property اضافه شده مدل دیگه ای لازم ندارد.
انجام دادم ولی خطای که داخل عکس میده
نقل قول: ایجاد حلقه روی مدل و جدا کردن ایتم
نقل قول:
نوشته شده توسط
ژیار رحیمی
برای هر بخش از رشته درون Filed1 سه Property اضافه شده (این Property ها ReadOnly هستند یعنی تو دیتابیس Map نمیشن فقط جهت دسترسی به بخشهای رشته درون Fileld1 استفاده میشوند)
چون شما بیان کردی تعداد فیلد ها محدود به 3 تا بیشتر نیست این روش جواب میده
البته بدون Property اضافه داخل مدل هم میتونی Field1 را موقع کویری به سه ستون تبدیل کنی
context.Promises.Select(c=>new{Field11=c.Field1.Sp lit({','})[0], Field12=c.Field1.Split({','})[1],Field13=c.Field1.Split({','})[2],.... });
این روش حل شد ممنون