دسته بندی ها
20:19 1398/11/10

رفع خطای Cannot convert from int to anonymoustype int

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1635     رتبه کاربر : 2
دسته بندی : Asp.net Core Asp.net Mvc سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3123
هوش مصنوعی

پاسخ هوش مصنوعی

برای رفع خطای "Cannot convert from int to anonymous type" که به دلیل تلاش برای استفاده از یک متغیر نوع ناشناس (anonymous type) به عنوان کلید در متد `Contains` رخ می دهد، می توانید به سادگی لیستی از مقادیر `PolicyID` را به دست آورید.

در بخش اول می توانید به صورت زیر کد خود را اصلاح کنید:


var userPolicy = _context.userRoleUW
    .Where(c => c.UserId == userId)
    .Select(uc => uc.PolicyID)
    .Distinct()
    .ToList();

سپس در بخش دوم، از لیست `userPolicy` که حالا تنها شامل مقادیر `PolicyID` است، استفاده کنید:


var ListPolicy = _context.policyAccessUW
    .Where(p => userPolicy.Contains(p.PolicyID))
    .ToList();

با استفاده از این تغییرات، کد شما باید بدون خطا اجرا شود و لیست ردیف هایی که در جدول Policy دارای ID های مورد نظر هستند را بازیابی خواهد کرد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 13:33 1398/11/11

شما از یک anonymousType استفاده کردید و بعد اومدید با یک مقدار از نوع int مقایسه کردید. کد خودتون رو به صورت زیر تغییر بدید درست میشه 

 

var userPolicy = (from UR in _context.UserRoles where (UR.UserId == userId) select new { UR.PolicyID });
var ListPolicy = (from pl in _context.Policy_Tbl where (userPolicy.Any(u => u.PolicyID == pl.PolicyID)) select new { id = pl.PolicyID, pname = pl.PolicyName }).ToList();

در واقع باید در قسمتی که میخواید مقایسه رو هم انجام بدید از یک anonymousType استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود