בעיה בחיפוש כשבחלק מהאובייקטים המאפיין ריק
-
כאשר אני מבצע חיפוש ע"פ מס' טלפון ולחלק מהאנשים ברשימה לא מוזן להם מס' טלפון, אז אני מקבל שגיאה:
"ההפניה לאובייקט לא הוגדרה למופע של אובייקט", כנראה בגלל שלא הוזן למאפיין הזה שום ערך הוא מוגדר כnull ולכן זה זורק לי את השגיאה הנ"ל.
כיצד אפשר להתגבר על כך, כדי שהוא יציג לי את תוצאות החיפוש מתוך האובייקטים שכן הוזן להם מס' טלפון?
תודה רבה!
הקוד הוא:if(!string.IsNullOrEmpty(telSearch.Text)) { donorFiltered = donorFiltered.Where(x => x.Tel.Contains(telSearch.Text)); } פורסם במקור בפורום CODE613 ב07/09/2015 21:32 (+03:00)
-
אז הנה התשובה:
donorFiltered.Where(x => (x.Tel ?? "").Contains(telSearch.Text));
פורסם במקור בפורום CODE613 ב07/09/2015 21:44 (+03:00)
-
לי זה מאוד הפריע בפרוייקט שלי עד שעמדתי וכתבתי מתודת הרחבה משלי...
public static bool Contains2(this string source, string toCheck) { if (string.IsNullOrEmpty(toCheck)) return true; return source != null && source.IndexOf(toCheck, StringComparison.InvariantCultureIgnoreCase) >= 0 ; } פורסם במקור בפורום CODE613 ב07/09/2015 22:55 (+03:00)
-
תודה רבה זה עובד מצויין!!
רק לא בדיוק הבנתי איך זה עובד..
בשורה הראשונה אתה בודק האם המחרוזת ששלחתי לחיפוש אינה ריקה, ואם כן אתה מחזיר true. זה כדי להתגבר על משתמש שיחפש בטעות בלי להזין שום ערך? ומה בדיוק מחזיר הטרו?? לכאו' שום דבר ובאותה מידה יכלת להחזיר false, לא?
בשורה השניה, מה זה StringComparison.InvariantCultureIgnoreCase?
תודה רבה רבה!פורסם במקור בפורום CODE613 ב08/09/2015 12:17 (+03:00)
-
נגיד הtelSearch.Text ריק. אז אני מחזיר חיובי - כי זה נחשב מבחינתי התאמה (האם המחרוזת "XXX" מכילה ""? לטעמי/לצרכיי כן). ייתכן שאצלך לא.
InvariantCultureIgnoreCase זה אומר לא להיות רגיש לאותיות גדולות קטנות - בלועזית (בתוכנה שלי בה הייתי צריך את זה השמות לועזיים).פורסם במקור בפורום CODE613 ב08/09/2015 12:46 (+03:00)
-
ומדוע העדפת להשתמש בIndexOf ולא בcontains המקורי?
פורסם במקור בפורום CODE613 ב08/09/2015 12:48 (+03:00)
-
נו, בגלל האותיות רישיות.
http://referencesource.microsoft.com/#mscorlib/system/string.cs,2118פורסם במקור בפורום CODE613 ב08/09/2015 14:58 (+03:00)
-
תודה!
סליחה על הבורות...
כנראה שאני צריך להשקיע זמן ולעבור על הפריימוורק..פורסם במקור בפורום CODE613 ב08/09/2015 15:17 (+03:00)
-
תודה!
סליחה על הבורות...
כנראה שאני צריך להשקיע זמן ולעבור על הפריימוורק..בכלל לא בורות לקח לי דקות ארוכות להיזכר למה באמת.
ו"לעבור על הפרימוורק" תדע לך שאני עדיין לא עברתיפורסם במקור בפורום CODE613 ב08/09/2015 15:18 (+03:00)
6/9