در C# برنامه‌ای بنویسید که یک List از شناسه‌های مجاز و یک List از داده‌ها بگیرد و تنها رکوردهایی را که Id آنها در لیست شناسه‌های مجاز وجود دارد با استفاده از List.Contains فیلتر و نمایش دهد.

9.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:49

0.0

برای حل این مسئله می‌توانید با یک حلقه یا با LINQ از متد Contains روی لیست شناسه‌های مجاز استفاده کنید، مثلاً dataList.Where(d => allowedIds.Contains(d.Id)). برای کار با C# و .NET از System.Linq استفاده کنید. نکته عملکردی: List.Contains برای هر جستجو O(n) است، بنابراین اگر لیست شناسه‌ها بزرگ است بهتر است آن را به یک HashSet تبدیل کنید تا جستجوها O(1) شوند؛ همچنین برای مقایسه رشته‌ای بدون حساسیت به حروف از StringComparer.OrdinalIgnoreCase یا ساختن HashSet با همین مقایسه‌گر استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:49
دسته بندی ها: C# C# for beginner
nima در 201 روز قبل ساعت 05:07

// برای کارایی بهتر، به جای استفاده مکرر از List.Contains، شناسه‌های مجاز را در یک HashSet ذخیره کنید تا جست‌وجوها O(1) شوند. اگر Idها رشته‌ای هستند از StringComparer.OrdinalIgnoreCase استفاده کنید یا HashSet را با این مقایسه بسازید تا مقایسه‌ها بدون حساسیت به حروف انجام شوند. مثلاً: var allowedSet = new HashSet<string>(allowedIds, StringComparer.OrdinalIgnoreCase); var result = dataList.Where(d => allowedSet.Contains(d.Id)); این رویکرد در داده‌های بزرگ کارایی بهبود معنی‌داری ایجاد می‌کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری