Pracuję z Entity Framework i mam takie zapytanie LINQ:
var foo = from ee in context.Table select new {id = ee.id, price = ee.price}.ToList();
gdzie cena jest dziesiętna (smallmoney w SqlServer). Teraz wiążę go z datagridview przez mydgv.DataSource = foo; Ale najpierw chciałbym przekonwertować wszystkie dziesiętne na łańcuchy w celu usunięcia zer z wartości (np. Teraz jest 26.0000 i chcę, żeby było 26,00). Jak mogę to zrobić? Coś jak:
bla.ForEach( x => x.price.ToString().Substring(0,3))
nie działa.
Odpowiedzi:
2 dla odpowiedzi № 1var q = foo.Select(x => new { id = x.id, price = x.price.ToString("N2") } );
Ale prawdopodobnie możesz ustawić ciąg formatu w kolumnie w datagridview na "N2" i powiązać bezpośrednio z oryginalnym źródłem danych. Coś jak:
dgv.Columns[0].DefaultCellStyle.Format = "N2";
0 dla odpowiedzi nr 2
Nie wiem, czy EF obsługuje to, ale spróbuj
new { ee.id, price = ee.price.ToString("f2") }