دسته بندی ها
09:58 1401/11/01

جستجو در رشته (Strings) توسط دستورات Linq

مشخصات سوال کننده :
کاربر : AliNoori     امتیاز کاربر : 136     رتبه کاربر : 11
دسته بندی : Asp.net Core Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1909
1 نظر
AliNoori : دوستان اگر امکان داره کمک کنید تو این مورد گیر کردم . تشکر

امتیاز کاربر : 136   رتبه کاربر : 11   تاریخ ثبت : 07:34 1401/11/01
هوش مصنوعی

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

به نظر می رسد که مشکل شما به دلیل استفاده نادرست از متد `Contains` در LINQ است. در کدی که نوشته اید، شما فقط الگوی `s.Substring(0, s.IndexOf(",") + 1)` را بررسی می کنید که به درستی کار نمی کند. لازم است به جای این کار، کل رشته کد ملی را بدون برش در متد `Contains` بررسی کنید.

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

List<string> listRefer2 = db.Comission.Get(c => c.Comission_PersonCode == GetPersonLoginCode & c.ArchiveName == 12 & c.AllowPermission).Select(c => c.Refer_PersonsCode).ToList();
string JoinData = string.Join(",", listRefer2);
string[] newdatasplit = JoinData.Split(',');
    
var CommissionModel = PagingList.Create(db.Miscellaneous.Get(c => 
    newdatasplit.Any(s => c.NationalCode.Contains(s.Trim())), orderby: e => 
    e.OrderBy(c => c.Family)), 20, Page);
CommissionModel.Action = "GetMiscellaneous";
return View(CommissionModel);

در اینجا ما از متد `Any` روی `newdatasplit` استفاده کرده ایم تا بررسی کنیم که آیا هیچ یک از کدهای ملی در `NationalCode` وجود دارد یا خیر. همچنین `s.Trim()` اضافه شده است تا مطمین شویم که فضای خالی در آغاز یا پایان رشته ها حذف شده است.

با این تغییر، شما باید بتوانید تمام رکوردهای مربوط به کدهای ملی را دریافت کنید. موفق باشید!

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 09:04 1401/11/02

بهتره کدهایی که میخواید قرار بدید رو خلاصه بنویسید و از نوشتن فیلدهای غیرضروری پرهیز کنید. برای جستجو در رشته توسط دستورات انتیتی فریم ورک میتونید از دستور زیر استفاده کنید :

جستجو در رشته توسط تابع Contain

توسط تابع Contain می تونید توی رشته ها جستجو کنید و زیر رشته مورد نظر رو پیدا کنید :

var query = db.Comission.Get(c=> c.Comission_PersonCode.Contains(GetPersonLoginCode));
if (query != null)
{
  ///دستورات شما
}

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

ویرایش شده در یکشنبه 2 بهمن 1401 ساعت 20:09:23
به این پاسخ امتیاز بدهید    ‎−1
امتیاز: 1635 رتبه: 2
1 نظر
AliNoori : با سلام مشکل این بود که Return باید بیرون foreach باشه و یه یک List که نتیجه رو به صورت موقت نگهداری کنه . تشکر

امتیاز کاربر : 136   رتبه کاربر : 11   تاریخ ثبت : 07:39 1401/11/14
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود