PDA

View Full Version : قراردادن ارایه یا لیست در شرط linq



hamzehsh
دوشنبه 07 مهر 1399, 18:27 عصر
سلام
یک کلاس دارم که یک enum برای پراپرتیش تعریف کردم


public class lockt
{
public int Id { get; set; }
public SecLocType SecLocType { get; set; }
}

public enum SecLocType
{
w = 100,
R = 101,
B = 102,

C = 200,
H = 201,
E = 202,
M = 500,
N = 400,
}

حالا میخوام یک سری از این enum ها روی توی شرط بیارم. در حالت عادی از متد Contain فقط میشه رشته رو گرفت

ViewData["LocID"] = new SelectList(await _uw.BaseRepository<lockt>().
FindByConditionAsync(w =>
w.SecLocType == SecLocType.w ||
w.SecLocType == SecLocType.C ||
w.SecLocType == SecLocType.B
), "LocationID", "LocationName");


من روشهای مختلف رو امتحان کردم ولی هنوز نتیجه نگرفتم
مثلا انواع لیست ها و آرایه ها رو امتحان کردم



List<int> loc = new List<int> { 100, 200, 300 };
var locid = new string[] { "600", "700", "800", "900" };
List<string> lst = new List<string> { "100", "200", "300", "400", "500", "600", "700", "800", "900" };


نمیدونم اینجای برنامه رو چطوری باید بنویسم که مجبور نباشم توی همه اکشن متد ها تغییرات ایجاد کنم.



ViewData["LocID"] = new SelectList(await _uw.BaseRepository<lockt>().
FindByConditionAsync(w =>
??????
????????
?????????
), "LocationID", "LocationName");

مهدی کرامتی
سه شنبه 08 مهر 1399, 22:15 عصر
var targetList = new List<SecLocType>() {SecLocType.B, SecLocType.C, SecLocType.R};
var locktList = new List<Lockt>()
{
new Lockt() {ID = 1, SecLocType = SecLocType.R},
new Lockt() {ID = 2, SecLocType = SecLocType.M},
new Lockt() {ID = 3, SecLocType = SecLocType.B},
new Lockt() {ID = 4, SecLocType = SecLocType.C},
new Lockt() {ID = 5, SecLocType = SecLocType.W},
};

var result = locktList.Where(ll => targetList.Contains(ll.SecLocType)).ToList();

hamzehsh
سه شنبه 15 مهر 1399, 22:33 عصر
سلام استاد ممنونم
در کلاس FindByConditionAsync الگوی Unit Of work هم کاربرد داره درسته؟

مهدی کرامتی
چهارشنبه 16 مهر 1399, 20:27 عصر
سلام استاد ممنونم
در کلاس FindByConditionAsync الگوی Unit Of work هم کاربرد داره درسته؟


بله. میشه استفاده کرد.