>>>DECLARE @test TABLE (Id uniqueidentifier default newID(), ColumnId int, RowId INT) >>>INSERT @test ( ColumnId, RowId ) VALUES ( 1,1 ) >>>INSERT @test ( ColumnId, RowId ) VALUES ( 1,2 ) >>>INSERT @test ( ColumnId, RowId ) VALUES ( 2,1 ) >>>INSERT @test ( ColumnId, RowId ) VALUES ( 2,2 ) >>>SELECT * FROM @test >>> >>>SELECT RowID, >>> cast([1] as uniqueidentifier) as Column1, >>> cast([2] as uniqueidentifier) as Column2 >>>from (select cast(Id AS BINARY(16)) AS id, columnId, rowID FROM @test) tmp >>>pivot >>>( >>> max( id ) >>> for columnID in ([1],[2]) >>>) AS pvt >>>>>>
>>>PivotTestTable.AsParallel() >>> .GroupBy (pt => pt.RowId ) >>> .Select (pt => new { >>> RowId = pt.Key, >>> Column1 = pt.SingleOrDefault (p => p.ColumnId==1).Id, >>> Column2 = pt.SingleOrDefault (p => p.ColumnId==2).Id >>> }) >>>>>
> var data = dbContext.MyPivots.ToArray(); > > var rows = data.Select (mp => mp.RowId).Distinct().Select( (row,pos) => new {row,pos} ); > var cols = data.Select (mp => mp.ColumnId).Distinct().Select( (col,pos) => new {col,pos} ); > > Guid?[,] pivot = new Guid?[rows.Count(),cols.Count()]; > > foreach (var record in data) > { > int r = rows.Single( rr => rr.row==record.RowId).pos; > int c = cols.Single( cl => cl.col==record.ColumnId).pos; > pivot[r,c] = (record.Id == null?null:record.Id); > } > >Cetin