نمایش نتایج 1 تا 7 از 7

نام تاپیک: concat

  1. #1
    کاربر دائمی آواتار forestasphalt
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تهران
    سن
    36
    پست
    468

    concat

    با سلام من چند تا جدول دارم که باید اطلاعات همشو در یک قسمت جمع کنم و به ویو بفرستم
    از uniion استفاده میکردم بهتر بود ولی union ظاهر ترتیب رو حفظ نمیکنه
    اگه اینکار با ویو مدل بشه انجام داد میشه محشر!

    var catCamera = Context.CatCamera.Select(p => new { p.Id, p.catDetails, p.category });
    var catflash = Context.CatFlash .Select(p => p.Id, p.catDetails, p.category });
    var catLenz = Context.CatLenz.Select(p => new { p.Id, p.catDetails, p.category });
    var CatAccessories = Context.catAccessories.Select(p => new { p.Id, p.catDetails, p.category });
    var concat = catflash.Concat(catCamera.Concat(catLenz.Concat(Ca tAccessories)));
    ViewBag.Categorys =concat;


    ViewBag.Categorys شامل اطلاعاتی که میخوام هست ولی وقتی میخوام توی ویو استفاده کنم با foreach به فیلدهاش نمیتونم دسترسی پیدا کنم
    اینکار با ویو مدل شدنی؟
    لطفا راهنمایی کنید
    با تشکر
    آخرین ویرایش به وسیله forestasphalt : پنج شنبه 13 تیر 1392 در 23:23 عصر

  2. #2

    نقل قول: concat

    چرا به فیلداش دسترسی ندارید؟
    ممکنه موقع نوشتن کد وقتی توی foreach از ViewBag استفاده می کنید VS براتون حدسی رو نیاره اما شما به کار خودتون ادامه بدید و کدتون رو بنویسید و اسم فیلدها رو خودتون کامل بنویسید.موقع اجرا خودش پیدا می کنه.

  3. #3
    کاربر دائمی آواتار forestasphalt
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تهران
    سن
    36
    پست
    468

    نقل قول: concat

    با تشکر از شما
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderExcept ion: 'object' does not contain a definition for 'Id'
    برای تمامه فیلدها همینجوری خطا میده

  4. #4

    نقل قول: concat

    این لینک فکر می کنم بتونه مشکلتون رو حل بکنه:
    http://stackoverflow.com/questions/7...finition-for-x

  5. #5
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: concat

    قبل هرچیز، فکر کنم خودتون هم واقفید که این طراحی مدلهاتون کاملاً اشتباه هست و اگه هنوز پایه پروژه رو روی این نوع طراحی نذاشتید و می تونید عوضش کنید؛ حتماً اینکار رو بکنید.
    می تونید مدلهای Camera، Flash، Lenz، Accessories و ... که همشون فیلدهای مشترکی دارند (که شما رو مجبور به Concat کردن!) رو تو یه مدل بنام Category قرار بدین و فقط نوعشون رو از یه جدول دیگه بگیرید و اگه تفاوت های زیادی تو مشخصات دارن (که حتماً اینطور هست!)، یه مدل ProductType داشته باشید که اونجا بشه فیلدهای متفاوت رو تعریف کرد و Product از اون ارث ببره و ...
    ____________________
    بگذریم؛ خوب شما هم بطور ضمنی ViewModel درست کردین؛ اون var یه ViewModel بدون نوع هست که بعنوان ViewBag.Categorys دارید به View پاس میدین (یکی از var ها new نداره!)؛ همینکار رو میشه با یه کوئری linq بصورت مطمئن تر زیر انجام داد، ببینید این ViewModel جواب میده:
    var categories = 
    (from category in Context.CatCamera
    select new
    {
    category.Id,
    category.catDetails,
    category.category
    })
    .Concat(from category in Context.CatFlash
    select new
    {
    category.Id,
    category.catDetails,
    category.category
    })
    .Concat(from category in Context.CatLenz
    select new
    {
    category.Id,
    category.catDetails,
    category.category
    })
    .Concat(from category in Context.catAccessories
    select new
    {
    category.Id,
    category.catDetails,
    category.category
    });
    ViewBag.Categories = categories;

    اصولآً باید جواب بگیرید، مگه اینکه مشکلی تو View داشته باشید ...

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1389
    محل زندگی
    تهران
    پست
    126

    نقل قول: concat

    برای اینکه از اطلاعات چند جدول با هم استفاده کنی باید حتما یک ViewModel استفاده بشه.تاما فیلد هایی که میخواید استفاده کنید رو در یک ViewModel بگذارید و نا ویو مدلتون رو هم ViewModelنام مدل مثلا OrdersViewModel قرار بدید با این روش میتونید اطلاعاتی رو که میخواید نمایش داده بشه در ویو مشاهده کنید.

  7. #7
    کاربر دائمی آواتار forestasphalt
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تهران
    سن
    36
    پست
    468

    نقل قول: concat


    List<MenuCategoryModel> list = new List<MenuCategoryModel>();
    var catCamera = Context.CatCamera.Select(p => new { p.Id, p.catDetails, p.category, Catname = "CatCameras" });
    var catflash = from p in Context.CatFlash select new { p.Id, p.catDetails, p.category, Catname = "CatFlashes" };
    var catLenz = Context.CatLenz.Select(p => new { p.Id, p.catDetails, p.category, Catname = "CatLenzs" });
    var CatAccessories = Context.catAccessories.Select(p => new { p.Id, p.catDetails, p.category, Catname = "catAccessories" });
    var concat = catflash.Concat(catCamera.Concat(catLenz.Concat(Ca tAccessories)));
    foreach (var item in concat)
    {
    list.Add(new MenuCategoryModel() { Id = item.Id, Category = item.category, CatDetails = item.catDetails, Catname = item.Catname });

    }
    return View(list);

    public class MenuCategoryModel
    {
    //tbl name
    public string Catname { get; set; }

    public Int32 Id { get; set; }
    public string Category { get; set; }
    public string CatDetails { get; set; }
    public string Model { get; set; }


    }


    منم قبول دارم روش زیاد مناسبی نیست
    من با این روش مشکلم حل شد
    anonymous type رو نمیشه مستقیم در view استفاده کرد باتوجه به لینکی که آقای یونس دوست دادن،اون new توی کپی پیست کردن جا افتاده بود!
    بله concat ها کلا با یک کوئری انجام بشه بهتره موافقم
    مرسی از دوستان

تاپیک های مشابه

  1. Concat شدن کاراکتر ها
    نوشته شده توسط rockpigeon در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: سه شنبه 06 فروردین 1392, 11:09 صبح
  2. مشکل در اجرای دستور concat در دیتابیس اکسس
    نوشته شده توسط shervinrv در بخش VB.NET
    پاسخ: 3
    آخرین پست: سه شنبه 15 آذر 1390, 23:32 عصر
  3. سوال: concat آرایه رو بلد نیستم به گیر خوردم
    نوشته شده توسط mohammadreza1386 در بخش PHP
    پاسخ: 2
    آخرین پست: یک شنبه 11 مرداد 1388, 13:46 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •