PDA

View Full Version : سوال: یافتن رکورد های MS-SQL متناظر با یک رشته باینری با Linq to entity



mantera
سه شنبه 26 اسفند 1393, 10:21 صبح
سلام و وقت بخیر:
آیا راه مناسبی هست که بشه یک رشته باینری مثل "10010" رو گرفت و بعد رکورد های متناظر با "1" ها رو از جدولی در دیتابیس خوند و توی یک جنریک کالکشن قرار داد؟
مثلا برای رشته ی باینری بالا رکورد صفرم و سوم از جدول مورد نظر ما انتخاب شه . کد ناقص زیر رو نوشتم اما خب خیلی سربار زیادی داره و غیرحرفه ای و آماتوره این راه حل :

public ICollection<Operation> GetAllowedOperations(string accessString)
{
PanelModel dbContext=new PanelModel();
var operationArray = dbContext.Operations.ToArray();

char[] accessArray = accessString.ToCharArray();

for (int i = 0; i <=accessArray.Count(); i++)
{
if(accessArray[i].Equals('0'))
{
operationArray[i] = null;
}
}
}
اگه ممکنه بزرگواران راه حل بهتری ارائه کنن لطفا .
پ.ن : operation اسم جدول فرضی ماست و accessstring رشته باینری.
از قبل ازتون خیلی متشکرم.

SabaSabouhi
سه شنبه 26 اسفند 1393, 12:19 عصر
سلام و وقت بخیر:
آیا راه مناسبی هست که بشه یک رشته باینری مثل "10010" رو گرفت و بعد رکورد های متناظر با "1" ها رو از جدولی در دیتابیس خوند و توی یک جنریک کالکشن قرار داد؟
مثلا برای رشته ی باینری بالا رکورد صفرم و سوم از جدول مورد نظر ما انتخاب شه . کد ناقص زیر رو نوشتم اما خب خیلی سربار زیادی داره و غیرحرفه ای و آماتوره این راه حل :

public ICollection<Operation> GetAllowedOperations(string accessString)
{
PanelModel dbContext=new PanelModel();
var operationArray = dbContext.Operations.ToArray();

char[] accessArray = accessString.ToCharArray();

for (int i = 0; i <=accessArray.Count(); i++)
{
if(accessArray[i].Equals('0'))
{
operationArray[i] = null;
}
}
}
اگه ممکنه بزرگواران راه حل بهتری ارائه کنن لطفا .
پ.ن : operation اسم جدول فرضی ماست و accessstring رشته باینری.
از قبل ازتون خیلی متشکرم.

سلام
می‌شه بگی، از این کار چه منظوری داری؟
از عناوین و نام‌گذاری می‌شه حدس زد که این کار برای اعطای دسترسی باشه، که اگه این‌گونه باشه
راه حل خوبی رو انتخاب نکردی، و خیلی کارهای به‌تری می‌تونی انجام بدی.

صبا صبوحی

mantera
سه شنبه 26 اسفند 1393, 14:18 عصر
حدس درستی زدی برای سطح دسترسی هاست ( البته بصورت داینامیک) ، پیشنهاد شما برای اون چیه ، ممکنه یه راه حل نسبتا ساده معرفی کنی لطفا؟

SabaSabouhi
سه شنبه 26 اسفند 1393, 17:49 عصر
حدس درستی زدی برای سطح دسترسی هاست ( البته بصورت داینامیک) ، پیشنهاد شما برای اون چیه ، ممکنه یه راه حل نسبتا ساده معرفی کنی لطفا؟

سلام
بله حتماً راه‌های به‌تری هست.
1. یک جدول نیاز داری برای منابع که می‌تونه شامل فرم‌ها، گزارش‌ها و غیره باشه.
2. یک سطح دسترسی نیاز داری که برای هر گروه از منابع می‌تونه فرق کنه. مثلاً برای فرم‌ها می‌تونه «فقط مشاهده» و «ویرایش» باشه
و برای گزارش‌ها می‌تون «فقط مشاهده روی مانیتور» و «چاپ» باشه.
3. یک جدول نیاز داری که هر گاه به شخصی دسترسی‌ای می‌دی اونجا ثبت بشه. مثلاً «صبا صبوحی» به «فرم مشتریان» دسترسی «فقط مشاهده» داره.

البته خیلی ساده گفتم، این می‌تونه پیچیده‌تر و کامل‌تر از این بشه. مثلاً می‌تونه گروه تعریف کنی و به گروه هم دسترسی بدی.

صبا صبوحی