مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mahdisky

عضویت از 1392/11/13

چجوری میتونم از myclass ایتمهایی رو که میخوام انتخاب کنم

  • پنجشنبه 12 فروردین 1395
  • 13:15
تشکر میکنم

چجوری میتونم از myclass ایتمهایی رو که میخوام انتخاب کنم و نمایش بدم با استفاده از لامبدا؟ 

وقتی از  {}select new myclass استفاده میکنم بهم خطا میده

ولی اگر یک  کلاس دیگه(کاملا شبیهmyclass) که کی از پروپرتیهای myclass () رو نداره بزارم درست کار میکنه.

این خطا میده:

db.Categories.Select(d => new Category { CategoryName = d.CategoryName, CategoryID = d.CategoryID }).OrderByDescending(d => d.CategoryID);

 

این درسته:

db.Categories.Select(d => new Category2 { CategoryName = d.CategoryName, CategoryID = d.CategoryID }).OrderByDescending(d => d.CategoryID);

 

public class Category
    {
        [Key]
        public int CategoryID { get; set; }
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
             public string CategoryName { get; set; }
        public virtual IEnumerable<Child> Childs { get; set; }
    }

 

public class Category2
        {
            public int CategoryID { get; set; }
            public string CategoryName { get; set; }
        }

 

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

saleh212

عضویت از 1394/12/04

  • پنجشنبه 12 فروردین 1395
  • 14:40

سلام سعی کنید اینطوری امتحان کنید امیدوارم جواب بدهsmiley

db.Categories.Select(d => new  { d.CategoryName,  d.CategoryID }).OrderByDescending(d => d.CategoryID);

در ضمن نکته ای که هست هر کلاس رو میشه فقط توی یک جدول ساخت نمیشه دو تا کلاس رو  مثل شما توی یک جدول درنظر گرفت.

من خوردم مواقعی که select رو مینویسم به همین شکل مینویسم تازه اون نام هایی رو که واسش انتخاب کردید رو هم میشه داخل ویو ها درست کرد 

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • پنجشنبه 12 فروردین 1395
  • 15:49

ممنون ولی

کلاس دومی یک کلاس معمولیه و جدولی ازش ساخته نمیشه و من صرفا اینو گذاشتم که بگم اینجوری میشه .

یعنی در کلاس اولی مسئله بخاطر اون کلید خارجی هست که به مشکل برمیخورم اگه اون کلید نباشه درست میشه ، باید این کلید رو چکار کرد؟

به سبک شما دیگه نمیشه برای ورودی و خروجی از کلاس استفاده کنیم ، مثلا:

IQueryable<Category>

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 13 فروردین 1395
  • 17:31

مشکلتون نمیتونه در Select New باشه

شاید مشکل از Property ها باشه

رابطه رو به صورت Virtual  کردید ولی سازنده نذاشتید

به شکل زیر درج کنید ببینید درست میشه

public class Category
    {
        [Key]
        public int CategoryID { get; set; }
        [Required(ErrorMessage = "لطفا {0} را وارد کنید")]
             public string CategoryName { get; set; }
        public virtual IEnumerable<Child> Childs { get; set; }

public Category(){}
    }

 

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • شنبه 14 فروردین 1395
  • 14:10

این خطاها رو به من میده

{
"message": "An error has occurred.",
"exceptionMessage": "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.",
"exceptionType": "System.InvalidOperationException",
"stackTrace": null,
"innerException":{
"message": "An error has occurred.",
"exceptionMessage": "The entity or complex type 'test.Models.Category' cannot be constructed in a LINQ to Entities query.",
"exceptionType": "System.NotSupportedException",
}

در گلوبال هم اینو گذاشتم

var jsonFormatter = GlobalConfiguration.Configuration.Formatters.OfType<JsonMediaTypeFormatter>().First();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)