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
                        };