جستجو در رشته (Strings) توسط دستورات Linq
با سلام
برنامه ای دارم که یک سری کد ملی رو در یک رکورد پشت سرهم ذخیره میکنه و کدهای ملی را با علامت ویرگول (,) از هم جدا کردم. (طبق تصویر)

درقسمت دیگه یک Query نوشتم که در صورتی که مساوی با هر کدام از کدهای ملی بود، رکوردها رو برگردونه. مشکل اینه فقط کد ملی اول رو پیدا میکنه ( تصویر پایین )
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(',');
foreach (string s in newdatasplit)
{
var CommissionModel = PagingList.Create(db.Miscellaneous.Get(c =>
c.NationalCode.Contains(s.Substring(0, s.IndexOf(",")+1)), orderby: e => e.OrderBy(c =>
c.Family)), 20, Page);
CommissionModel.Action = "GetMiscellaneous";
return View(CommissionModel);
}
ممنون میشم کمک کنید .
پاسخ هوش مصنوعی
به نظر می رسد که مشکل شما به دلیل استفاده نادرست از متد `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()` اضافه شده است تا مطمین شویم که فضای خالی در آغاز یا پایان رشته ها حذف شده است.
با این تغییر، شما باید بتوانید تمام رکوردهای مربوط به کدهای ملی را دریافت کنید. موفق باشید!
بهتره کدهایی که میخواید قرار بدید رو خلاصه بنویسید و از نوشتن فیلدهای غیرضروری پرهیز کنید. برای جستجو در رشته توسط دستورات انتیتی فریم ورک میتونید از دستور زیر استفاده کنید :
جستجو در رشته توسط تابع Contain
توسط تابع Contain می تونید توی رشته ها جستجو کنید و زیر رشته مورد نظر رو پیدا کنید :
var query = db.Comission.Get(c=> c.Comission_PersonCode.Contains(GetPersonLoginCode));
if (query != null)
{
///دستورات شما
}
البته در کدهاتون نگاه میکنم از Contains استفاده کردید اما دلیل اینکه سایر دستورات رو نوشتید نمی دونم چی هست چون خود Contains جستجو شما رو انجام میده.
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- چرا استوری های واتس اپ برای دوستان نمایش داده نمیشن ؟
- چند تا استوری رایگان می تونیم تلگرام بذاریم ؟
- خطای Severity Code Description Project هنگام استارت پروژه
- کار نکردن navBar و sideBar در پروژه Asp.net core
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2