עבור לתוכן

הרחבת השימוש ב-DATATABLE ב-C#

Featured Replies

פורסם

שלום,

מצאתי ברשת את הקוד הבא שמאפשר לי לחשב ביטויים מתמטיים פשוטים:



static double Evaluate(string expression) {
var loDataTable = new DataTable();
var loDataColumn = new DataColumn("Eval", typeof (double), expression);
loDataTable.Columns.Add(loDataColumn);
loDataTable.Rows.Add(0);return (double) (loDataTable.Rows[0]["Eval"]);}

איך ניתן להרחיב את הקוד כך שאני אוכל להשתמש גם במשתנים בביטוי, כלומר במקום "2+3"

לשלוח לפונקציה "X +3" כש-X מוגדר לפני כן בתור 2.

פורסם

נשמע לי כמו דרך די עקומה לעשות משהו...

אם כבר משתמשים ב-DataTable אז אפשר להשתמש בפונקציה Compute.

לא עדיף להשתמש בחבילה ייעודית שיודעת לחשב ביטויים מתמטיים?

פורסם
  • מחבר

האפליקציה הנ"ל היא לצורכי עבודה ואסור לי להעזר בתוכנות צד שלישי כגון NCALC.

איך הפונקציה Compute נותנת פיתרון למחרוזת כגון "2*3+1"?

האם אתה יכול להוסיף קוד דוגמא?

פורסם
  • מחבר

תודה על הפתרון.

מה בנוגע לשאלה המקורית,האם ניתן לשלב משתנה במחרוזת למשל "2+x" כך שאוכל לקבל ערכים מהמשתמש תוך כדי ריצה?

פורסם

אתה יכול לעשות את זה עם החלפה פשוטה (פשוט תחליף את "x" במחרוזת בערך שאתה רוצה להשתמש בו), ואני מניח שגם אתה יכול לשים את המשתנה הזה כמידע בתוך ה-DataTable (כלומר תיצור לו DataColumn עם הגדרת המשתנה ו-DataRow עם התוכן של המשתנה) ואז אתה יכול להשתמש במידע הזה בביטוי.

השאלה היא מה המטרה שלך, כי בטוח יש דרכים יותר טובות לעשות את זה.

פורסם
  • מחבר

אני יוצר אפליקציה לעבודה במטרה לייעל תהליך מסויים.

במסגרת הפרויקט אני יוצר מאגר מידע המבוסס על קבצי XML ובתוכו מחרוזות שהתקבלו מהמשתמש.

מחרוזת דוגמא יכולה להיות "2+X/3" כש-X הוא משתנה המתקבל בזמן ריצה מהמשתמש.

את המחרוזת הנ"ל אני שולח לפונקציה שאמורה להחזיר לי את התוצאה.

האם ניתן?

פורסם

איך x מתקבל מהמשתמש? מה רע בהחלפה פשוטה של "x" במה שהמשתמש הזין (באמצעות string.replace)?

פורסם
  • מחבר

STRING.REPLACE עושה את העבודה, תודה על ההתמדה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים