Du kan dra fördel av att SQL Server 2008 nu stöder tabelltyper. Du kan definiera en tabelltyp och på .net-sidan konstruera en DataTable
och skicka det som en parameter till din lagrade procedur. På SP-sidan är den parametern av typen [vilken tabelltyp du än har gjort] Här är ett exempel.
TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos));
Du kan sedan lägga till positioner som en parameter för din lagrade procedur
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
I din databas måste du definiera en tabelltyp som
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
och i din lagrade procedur lägg till
@MyPositions Positions Readonly
Nu kan du behandla @MyPositions
som en tabell i din procedur och jämför med den.