תשובות להערות.
(איחדתי את התשובות מאחר וראיתי קשר בינהן) כאן לדעתי אין צורך בoverloading, אתה רוצה לבצע חיפוש ע"פ חתך מסויים בטופס. אני כנראה אף פעם לא אשלח Null לBL(ומשם לDAL) כי אני לא רוצה לעבוד קשה ולבצע בaspx שלי בדיקה - אם השדה שלי Name.Text=="" אז שלח null כפרמטר, אלא אני רוצה לשלוח ישירות את Name.Text ולתת לBL+DAL "לשבור את הראש" (טיפול כפול, בDAL + aspx לדעתי זה סתם error prone(טיפלתי בDAL אבל שכחתי בaspx...) וטיפול כפול בלוגיקה יחידה). לכן נראה לי שoverloading מיותר, אלא אם כן אני מאפשר checkboxes בטופס שיצביעו "האם לחתוך תוצאות על פי שדה זה". אני חושב שלשלוח Null זה טיפה לא תואם מציאות (+נוח לתוכניתן, אבל שוב, רק במידה ואני לא מאפשר "האם לחתוך על פי שדה זה") ואני אסביר - סה"כ יש לנו כאן טופס שמכיל שדות שאנחנו רוצים לחתוך לפיהם. במידה והמשתמש לא הזין ערך לשדה "שם" למשל, כנראה שהוא פשוט לא רצה לחתוך לפי זה ולא תן לי את כל השמות הריקים (כמובן, תלוי אפליקציה, אבל יש להניח שברוב המקרים זה יתפוס). אם יש לי Drop-down-lists אז בד"כ הם יהיו מלאים בערכים מטבלת קודים (למשל במסך משתמשים, מצב אפשרי הוא שיהיה לי איזה DDL של "ערים" - תן לי את כל המשתמשים מעיר X), יתכן שאני ארצה להוסיף option ריק כדי לא לחתוך תוצאות לפי זה (תן לי את כל המשתמשים, אבל אל תתייחס למיקומם הגאוגרפי) - זה מקרה קלאסי שהייתי מזין בoption הריק את הvalue=0. ואז כמובן יכלתי לפי נתון זה לא להוסיף את אותו תנאי(+join) לשאילתא. לכן בחרתי בשני חוקים שציינתי בהודעתי הקודמת, אבל כפי שאמרתי - יש המון מקרים, המון אפשרויות, אבל תמיד יש להשתמש בbind variables - זה טוב לביצועים וטוב לאבטחה. מקווה שזה היה סיכום ממצה.