Subsic كيفية تنفيذ بيان SQL؟
-
02-10-2019 - |
سؤال
يستخدم موقعي Subsonic 2.2 على موقعي.
لديّ حالة غريبة واحدة حيث أحتاج إلى تشغيل بعض عبارات SQL المخصصة.
public IList<string> GetDistincList(string TableName, string FieldName)
{
string sqlToRun = string.Format("SELECT DISTINCT {0} FROM {1} ORDER BY {0}", FieldName, TableName);
Query query = new Query(TableName);
query.PleaseRunThis(sqlToRun);
query.ExecuteReader();
}
يمكن لأي شخص أن يساعدني هنا؟ كما يظهر ، أريد فقط إرجاع قائمة عامة من السلاسل.
شكرًا!
المحلول
لدى Subong طريقة رائعة تسمى executeTypedList () حتى تتمكن من فعل Somethink مثل هذا.
List<int> result = DB.Select(Table.Columns.Id)
.Distinct()
.From<Table>()
.OrderBy(Table.Columns.Id)
.ExecuteTypedList<int>();
أو حتى مع pocos:
public class UserResult
{
public int Id {get;set;}
public string Name {get;set;}
}
List<UserResult> users = DB.Select(
User.Columns.UserId + " as Id", // the as ... is only needed if your
User.Columns.UserName + " as Name" // column name differs from the
).From<User>() // property name of your class
.ExecuteTypedList<UserResult>();
لسوء الحظ ، لا تعمل هذه الطريقة مع السلسلة لأنها تتطلب أ)
ومع ذلك ، كتبت طريقة تمديد منذ فترة تعمل للسلسلة:
استخدم طريقة subsic.select () executePedList مع سلسلة
انظر إلى إجابتي الخاصة في الرابط.
إذا قمت بإضافة ExtensionMethod إلى الكود الخاص بك ، يمكنك القيام به:
List<String> result = DB.Select(User.Columns.UserName)
.From<User>()
.ExecuteTypedList();
نصائح أخرى
استخدم فئة CodingHorror.
إليك طريقة Subsond 3 للقيام بذلك: http://www.subsonicproject.com/docs/codinghorror
الطريق دون الصوت 2 متشابهة:
Dim ch As SubSonic.CodingHorror
ch.Execute("delete from @tablename", table)
لا تنتمي إلى StackOverflow