Loading...
KeepAlive avatar KeepAlive 0 Точки

C# - Check if string is empty

Здравейте,

имам един бутон, който взема числа от колона на gridview и пресмята примерно средно аритметично и разни други такива, обаче ако няма нищо в тази колона, тоест клетките са празни или null (не знам по подразбиране какви са) или пък потребител изтрие всичките клетки от тази колона, програмата ще изгърми, понеже няма какво да взмеме и да прочете.

Въпроса ми е как да валидирам това нещо и ако клетките са празни, да избегна бъга. Ето пример от бутона:

        private void btnCalculate_Click(object sender, EventArgs e)
        {
            lblAvg.Text = String.Format("Average score: {0:F2}",
                (from GridViewRowInfo row in studentGridView.Rows
                 where row.Cells[1].Value.ToString() != string.Empty
                 select Convert.ToDouble(row.Cells[1].Value)).Average());
        }

Грешката, която дава е:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Core.dll

 

 

 

Тагове:
0
C# Advanced
enevlogiev avatar enevlogiev 1168 Точки
Виж дали със string.IsNullOrWhitespace() ще стане
0
RoYaL avatar RoYaL Trainer 6849 Точки

Има ли шанс "row.Cells[1]" първо да не връща обект, а NULL ? Провери това за Null, след това провери Value за Null и чак след това върху ToString()-а прави операциите за празен стринг. Може да го тримнеш първо, и после да пробваш IsNullOrEmpty

0
KeepAlive avatar KeepAlive 0 Точки

Пробвах с:

where (row.Cells[1].Value != null)
where (row.Cells[1].Value.ToString() != string.Empty) && (row.Cells[1].Value.ToString() != null)
where (!string.IsNullOrEmpty(row.Cells[1].Value.ToString()))
where !string.IsNullOrWhiteSpace(row.Cells[1].Value.ToString())

и не става.

Ако в грида(и по-точно колоната дето ми трябва) поне една клетка е запълнена с число всичко сработва. Не знам как трябва да се направят тези заявки. Mоже би не проверката, дето правя в where, а след това при select, идва проблема?, То се опитва да селектне без значение проверките и затова гърми? Ако някой има по-добра идея като цяло за това, дори с linq, ще е супер :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

За това идеята ми е да не селектваш въобще клетките, където обекта cells[1] или cells[1].Value не съществува, така че още преди да стигнеш до Value и Value.ToString() where-ни още cells[1] != null && cells[1].Value != null

0
KeepAlive avatar KeepAlive 0 Точки

Как точно трябва да стане?

(from GridViewRowInfo row in studentGridView.Rows
where (row.Cells[1] != null) && (row.Cells[1].Value != null)
select Convert.ToInt32(row.Cells[1].Value)).Min().ToString();

Ако това ти е идеята, пак дава exception-a.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.