1

fileAuto,firstcsv ( ) から作成されたオブジェクトと、datatable( ) から作成されたオブジェクトの 2 つが必要dbAuto,secondです。どちらもcount柱があります。

複数の列と結果で2つを結合し、最初の列と一致しない2番目の項目を含め、最初のcount列と最初の列を含めてリストに追加したいと考えています。

を使いたいと思ったのです.Except()が、複数の列を比較するための比較機能を持たせる方法がわかりませんでした。結合が機能すると思っていましたが、結合句の式の 1 つが正しくないというエラーが表示されます。

私はLinqについて大まかに理解しているので、これを達成する方法がよくわかりません。後者のコードを含めました。

public class FileAuto
{
    public string DealerCode;        
    public string ModelCode;
    public int ModelYear;
    public string ExteriorCodeCode;
    public string InteriorColorCode;
    public int FileVehicleCount;
}

public class DbAuto
{
    public string DealerCode;
    public string DealershipName;
    public string ModelCode;
    public int ModelYear;
    public string ExteriorCodeCode;
    public string InteriorColorCode;
    public int DbVehicleCount;
}

public class IDiscObj // INVENTORY DISCREPANCIES object
{
    public string DealerCode;
    public string DealershipName;
    public string ModelCode;
    public int ModelYear;
    public string ExteriorCodeCode;
    public string InteriorColorCode;
    public int FileVehicleCount;
    public int DbVehicleCount;
}

var autoscombined = 
    from f in fileInv
    join d in dbInv
        on 
            new {f.DealerCode, f.ModelCode, f.ModelYear, f.ExteriorCodeCode, f.InteriorColorCode} 
        equals 
            new {d.DealerCode, d.ModelCode, d.ModelYear, d.ExteriorCodeCode, d.InteriorColorCode}
    select (a => new IDiscObj {
        DealerCode = f.DealerCode,
        DealershipName = d.DealershipName,
        ModelCode = f.ModelCode,
        ModelYear = f.ModelYear,
        ExteriorCodeCode = f.ExteriorCodeCode,
        InteriorColorCode = f.InteriorColorCode,
        FileVehicleCount = f.FileVehicleCount,
        DbVehicleCount = d.DbVehicleCount
        });

また、これらの結果を取得して、以下にリストしたディーラーコードでグループ化された両方の車両数を合計したいと考えています. 私がこれらのソリューションのいずれかで正しい軌道に乗っているのか、それともこれを達成するためのより適切な方法があるのか​​ を誰かが教えてくれれば、それは素晴らしいことです.

if (DDOlst.Count > 0) //list of IDiscObj 
{
    var ddos = 
        from d in DDOlst
        group d by new { d.DealerCode, d.DealershipName } into g
        select 
            new { 
                g.Key.DealerCode, 
                g.Key.DealershipName, 
                filecnt = g.Sum(d => d.FileVehicleCount), 
                dbcnt = g.Sum(d => d.DbVehicleCount) 
                };
}
4

1 に答える 1

3

a=>select句には必要ありません:

var autoscombined = from f in fileInv
    join d in dbInv
    on new {f.DealerCode, f.ModelCode, f.ModelYear, f.ExteriorCodeCode, f.InteriorColorCode} 
        equals new {d.DealerCode, d.ModelCode, d.ModelYear, d.ExteriorCodeCode, d.InteriorColorCode}
    select new IDiscObj {
        DealerCode = f.DealerCode,
        DealershipName = d.DealershipName,
        ModelCode = f.ModelCode,
        ModelYear = f.ModelYear,
        ExteriorCodeCode = f.ExteriorCodeCode,
        InteriorColorCode = f.InteriorColorCode,
        FileVehicleCount = f.FileVehicleCount,
        DbVehicleCount = d.DbVehicleCount
    };
于 2013-03-30T17:38:37.377 に答える