These are the class I'm assuming you already have, or you'll create
public class Data1
{
public string Campionato { get; set; }
public string Data { get; set; }
public string Home { get; set; }
public string Away { get; set; }
public int HSFT { get; set; }
public int ASFT { get; set; }
public int HSHT { get; set; }
public int HSHT2 { get; set; }
}
public class Data2 //you can use inheritance and reduce duplication of properties
{
public string Data { get; set; }
public string Home { get; set; }
public string Away { get; set; }
public double HODD { get; set; }
public double AODD { get; set; }
public double XODD { get; set; } //no name in sample
}
public class CombinedData //you can use inheritance here too
{
public string Campionato { get; set; }
public string Data { get; set; }
public string Home { get; set; }
public string Away { get; set; }
public int HSFT { get; set; }
public int ASFT { get; set; }
public int HSHT { get; set; }
public int HSHT2 { get; set; }
public double HODD { get; set; }
public double AODD { get; set; }
public double XODD { get; set; } //some name
}
You can read the raw data like this
var data1 = File.ReadAllLines(@"C:\YourFolder\Data1.txt").ToList();
data1.RemoveAt(0); //reamoving the header
var data2 = File.ReadAllLines(@"C:\YourFolder\Data2.txt").ToList();
data2.RemoveAt(0); //reamoving the header
Now map them to proper (typed) data list
var dataList1 = new List<Data1>();
foreach(var data in data1)
{
var columns = data.Split(';'); //add data validations
dataList1.Add(new Data1
{
Campionato = columns[0],
Data = columns[1],
Home = columns[2],
//other string properties
HSFT = int.Parse(columns[4])
//other int properties
});
}
var dataList2 = new List<Data2>();
foreach (var data in data2)
{
var columns = data.Split(';'); //add data validations
dataList2.Add(new Data2
{
Data = columns[0],
Home = columns[1],
//other string properties
HODD = double.Parse(columns[3])
//other double properties
});
}
Now you can join them and bind in your Grid.
Note: This is joining on Data column, which will result in 5 rows total.
var combinedDataList = from d1 in dataList1 //Joining on Data here, use the key you have
join d2 in dataList2 on d1.Data equals d2.Data
select new CombinedData { Campionato = d1.Campionato,
Data = d1.Data,
HSFT = d1.HSFT,
HODD = d2.HODD }; //map all properties
yourDataGrid.DataSource = combinedDataList; //check syntax here, not tested
yourDataGrid.Bind();
Update
If you want to join on multiple columns (e.g. Data & Home), use this syntax
var combinedDataList = from d1 in dataList1 //Joining on Data & Home, yields 3 rows
join d2 in dataList2 on new { d1.Data, d1.Home } equals new { d2.Data, d2.Home }
select new CombinedData
{
Campionato = d1.Campionato,
Data = d1.Data,
HSFT = d1.HSFT,
HODD = d2.HODD //map rest of the properties
};