2

1 つのテーブル列に 2 つのテーブルがあり、FID です。FID はテーブル'tblRe 'にあり、db の型は文字列であり、他のテーブル列は MID です。MID はテーブル'tblVeh'にあり、db の型は int です。両方の値は同じですが、名前は異なります。調整しようとしましたが、これはエラーを示しています

                string data = "[";
                var re = (from veh in DB.tblVeh
                          join regh in DB.tblRe on 
                          new{MID=veh .MID} equals new {MID=tblRe .FID}
                          where !(veh .VName == "")
                          group veh by veh .VName into g
                          select new
                          {
                              Name = g.Key,
                              cnt = g.Select(t => t.Name).Count()
                          }).ToList();


                   data += re.ToList().Select(x => "['" + x.Name + "'," + x.cnt + "]")
                  .Aggregate((a, b) => a + "," + b);

                  data += "]";

私はこれを試します

 new{MID=veh .MID} equals new {MID=tblRe .FID}

エラー

The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'.

任意のソリューション

4

2 に答える 2

0

結合を実行するときは、キーの種類が一致していることを確認する必要があります。単一のプロパティに参加しているため、匿名オブジェクトは必要ありませんが、型が一致している必要があります。文字列に結合する方が適切なので、プロパティを文字列に変換します。

var query =
    from v in db.tblVeh
    join r in db.tblRe on Convert.ToString(v.MID) equals r.FID
    where v.VName != ""
    group 1 by v.VName into g
    select $"['{g.Key}',{g.Count()}]";
var data = $"[{String.Join(",", query.AsEnumerable())}]";
于 2016-06-23T02:52:24.857 に答える