C # string to number, TryParse returns true when Parse failed

I have a column in my database (SQL Server) where varchar averages are stored .

The values are not always acceptable number, it might be something like: 0, 12, 5.5, .4, 4.0, 6., 5.21428571428571428571428571428571428571, X, failor just an empty text.

When assigning the linq variable, I want to display:

  • success if the average acceptable number and> = 4
  • failedif the mean is a real number and <4
  • raw text if the average is not a valid number

The code:

myresults = myDataContext.myDbFunction()
double note;
from a in myresults
select new MainReportModel()
{
    Id = a.id,
    Lastname = a.nom,
    Firstname = a.prenom,
    Average = a.moyenne,
    Result = double.TryParse(a.moyenne.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture, out note) ? (double.Parse(a.moyenne.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture) < 4 ? "failed" : "success") : a.moyenne
}

But Parse does not work.

double.Parse(a.moyenne.Trim() (, double.Parse("3.3") .

, a.moyenne.Trim() Parse.

, TryParse true?

. :

Could not translate expression 'value(MyProjectWeb.Models.MyProjectDataContext).myDbFunction().Select(a => new MainReportModel() {Id = a.id, Lastname = a.nom, Firstname = a.prenom, Average = a.moyenne, Result = IIF(TryParse(a.moyenne.Trim(), Number, Invoke(value(System.Func`1[System.Globalization.CultureInfo])), Invoke(value(System.Func`1[System.Double]))), IIF((Parse(a.moyenne.Trim(), Number, Invoke(value(System.Func`1[System.Globalization.CultureInfo]))) < 4), Invoke(value(System.Func`1[System.String])), "success"), ((a.moyenne) + "</span>"))})' into SQL and could not treat it as a local expression.
+4
2

TryParse Sql, , Sql, , .

,

myresults = myDataContext.myDbFunction()
double note;

var list =(from a in myresults
select new 
{
   a.id,
   a.nom,
   a.prenom,
   a.moyenne,
}).ToList();


var finalResults = (from a in list 

select new MainReportModel()
{
   Id = a.id,
   Lastname = a.nom,
   Firstname = a.prenom,
   Average = a.moyenne,
   Result = double.TryParse(a.moyenne.Trim(), NumberStyles.Number,    CultureInfo.InvariantCulture, out note) ? (double.Parse(a.moyenne.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture) < 4 ? "failed" : "success") : a.moyenne
}
+1

TryParse ?

Result = double.TryParse(a.moyenne.Trim(), NumberStyles. Number, CultureInfo.InvariantCulture, out note) ? (double.TryParse(a.moyenne.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture) < 4 ? "failed" : "success") : a.moyenne

.

0

Source: https://habr.com/ru/post/1584643/


All Articles