Работа над приложением C# для расчета заработной платы. Как предупреждение, я очень новичок во всем этом, просто был впущен в него и наслаждался этим, но он много поглощает за короткий промежуток времени. В настоящее время я изучаю LINQ и классы. Я захватываю строки счетов из нашей учетной записи SQL-сервера и оплачивая персонал на основе продаж и некоторых ситуаций, которые могут быть определены из данных. Смотрите пример ниже:Как лучше всего обрабатывать данные в моем приложении
Ord_Inv_No Delivery_Date Trmnl_Key TrmnlGrp_Key
INV-00059754 2016-05-02 07:00:00 23 3
INV-00059839 2016-05-02 16:01:00 56 3
Это очень небольшая часть данных, но она дает суть того, что я хочу, чтобы проанализировать. У меня есть класс, как показано ниже:
class SalesItem
{
public string DriverName { get; set; }
public DriverData DriverData { get; set; }
public int TerminalKey { get; set; }
public int TerminalGroupKey { get; set; }
public string DeliveryDate { get; set; }
public string CustomerLocation { get; set; }
public int? CustomerLocationKey { get; set; }
public bool? IsCredited { get; set; }
public string InvoiceNumber { get; set; }
public string TermianlGroupDesc { get; set; }
public SalesItem(string driverName, int terminalKey, int terminalGroupKey, string deliveryDate,
string customerLocation, int? customerLocationKey, bool? isCredited, string invoiceNumber, string terminalGroupDesc)
{
this.DriverName = driverName;
this.TerminalKey = terminalKey;
this.TerminalGroupKey = terminalGroupKey;
this.DeliveryDate = deliveryDate;
this.CustomerLocation = customerLocation;
this.CustomerLocationKey = customerLocationKey;
this.IsCredited = isCredited;
this.InvoiceNumber = invoiceNumber;
this.TermianlGroupDesc = terminalGroupDesc;
}
Я пытаюсь реализовать способ, которым я могу 1. хранить каждый SalesItem
(каждая строка) в виде коллекции из-за отсутствия лучшего слова. Я хочу выполнить итерацию по коллекции SalesItem
и узнать несколько вещей, например, когда строка счет-фактуры отображается дважды с разными Trmnl_Key
и двумя разными Ord_Inv_No
, которые имеют ту же самую дату, что и друг друга, и возвращают максимальную ставку оплаты за два. Я написал для этого какую-то логику, которая манипулировала DataTable
, который я захватывал через SQLConnection/Command/Reader/Etc, но все это было очень медленным и громоздким при работе с неделей данных, и я не мог заставить сравнение работать надежно. Далее по строкам эти строки будут помечены в DataGrid в WPF для проверки людей их заработной платы в случае чего-то фанки, входящего в бухгалтерское программное обеспечение.
Прямо сейчас, я пытаюсь сохранить коллекцию, как показано ниже (который только текущей итерации, у меня есть несколько дней стоит пытаться, что это не удалось.)
private void GetInformation(object sender, SelectionChangedEventArgs e)
{
ComboBox currentItem = sender as ComboBox;
int driverKey = Convert.ToInt32(currentItem.SelectedValue);
DriverData driver = new DriverData();
driver.SetDriverData(driverKey);
int years = driver.ServiceYears;
List<SalesItem> items = (from o in transportationDb._Payroll_Orders
where o.Ord_Driver_Key == driverKey &&
o.Delivery_Date >= new DateTime(2016, 5, 2) && o.Delivery_Date <= new DateTime(2016, 5, 8)
select new SalesItem(
o.Driver_Name,
o.Trmnl_Key,
o.TrmnlGrp_Key,
o.Delivery_Date.ToString(),
o.CustLoc_Description,
o.Ord_CustLoc_Key,
o.Credits, o.Ord_Inv_No, o.TrmnlGrp_Description)).ToList();
dataGrid.ItemsSource = items;
}
Любая мудрость или направление будет ценится
Вы используете Entity Framework? –
вам нужно будет объявить 'List элементов' вне метода GetInformation на уровне класса, также вы видите элементы в DataGrid после того, как вы назначили ItemsSource, возможно, вам следует Google, как связать список с DataGridView. . Посмотрите, как это свойство DataSource –
MethodMan
EF не работает. Используйте TSQL и DataReader. – Paparazzi