することにより、グループの別のフィールドが含まれるので、すべきではこのは、どのように私は一人のユーザーが持っているすべての艦隊と各艦隊</p> <p>のすべての車でツリービューを表示するように設定データを作成したい
ように見える木|
| - fleetName -- fleet_id as node key
| |
| |--- plate_number -- gps_device_id as node key
| - plate_number -- for cars wont belong to any fleet
customer_cars
CREATE TABLE tracker.customer_cars
(
customer_car_id integer NOT NULL DEFAULT nextval('customer_cars_car_id_seq'::regclass),
gps_device_id integer,
plate_number string
user_id text NOT NULL,
fleet_id integer,
CONSTRAINT customer_cars_idx PRIMARY KEY (customer_car_id),
CONSTRAINT cars_gps_device_fk FOREIGN KEY (gps_device_id)
REFERENCES tracker.gps_devices (gps_device_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fleet_fk FOREIGN KEY (fleet_id)
REFERENCES tracker.fleet_cars (fleet_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
fleet_cars
0123私はvar customer_cars = db.customer_cars
.Include(c => c.gps_devices)
.Include(c => c.fleet_cars)
.Where(c => c.user_id.CompareTo(UserId) == 0)
.GroupBy(c => c.fleet_id,
c => c.fleet_cars,
(key, g) => new
{
FleetID = key,
Cars = g.ToList()
}
);
してみてくださいしかしfleet_name
を持っていけない何
CREATE TABLE tracker.fleet_cars
(
fleet_id serial NOT NULL,
fleet_name text,
user_id text NOT NULL,
CONSTRAINT fleet_idx PRIMARY KEY (fleet_id)
)
、唯一fleet_id
と車はキーで少し自分のグループを変更するgps_device_id
foreach (var fleet in customer_cars)
{
-- have id but no name
string fleet_id = fleet.FleetID.HasValue ? fleet.FleetID.ToString() : "0";
foreach (var car in fleet.Cars){
string fleet_name = car.fleet_name; -- have fleet_name
string gps_id = car.gps_device_id ; -- dont have gps_device_id
}
}
Try:.GroupBy(c => new {c.fleet_id、c.fleet_cars})。名前を取得するには、idで2つのテーブルを結合する必要があります。 – jdweng
@jdwengその場合、 'fleet in customers_cars'は艦隊オブジェクトではないコレクションです。 'fleet = {fleet_id、fleet_name、list}' –
私はあなたがJOINを使う必要があると言った。 msdn:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng