使用ExecuteQuery进行Linq SELECT

Tom*_*len 5 c# sql linq asp.net

我收到错误:

类型'System.Int32 []'必须声明一个默认(无参数)构造函数,以便在映射期间构造.

随着代码:

var gamePlayRecord = db.ExecuteQuery<int[]>("SELECT UserID, IPID, GameID FROM ArcadeGames WHERE ID = " + gamePlayRecordID).Single();
var userID = gamePlayRecord[0];
var ipID = gamePlayRecord[1];
var gameID = gamePlayRecord[2];
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但有人可以告诉我如何正确地完成它而不需要创建一个新的对象吗?

sla*_*voo 8

此查询的结果不是int[]包含数字的一行.

不好的解决方案:用于每个号码:

int userID = db.ExecuteQuery<int>("SELECT UserID FROM ArcadeGames WHERE ID = " + gamePlayRecordID).Single();
int ipID = db.ExecuteQuery<int>("SELECT IPID FROM ArcadeGames WHERE ID = " + gamePlayRecordID).Single();
int gameID db.ExecuteQuery<int>("SELECT GameID FROM ArcadeGames WHERE ID = " + gamePlayRecordID).Single();
Run Code Online (Sandbox Code Playgroud)

或创建SQL查询

db.ExecuteQuery<int>(@"
SELECT UserID FROM ArcadeGames WHERE ID = {0}
UNION ALL
SELECT IPID FROM ArcadeGames WHERE ID = {0}
UNION ALL
SELECT GameID FROM ArcadeGames WHERE ID = {0}", 
gamePlayRecordID).ToList();
Run Code Online (Sandbox Code Playgroud)

或创建课程......


Bha*_*rat -1

应该是这样的

  var gamePlayRecord = db.ExecuteQuery<ArcadeGames>(@"SELECT UserID, IPID, GameID FROM ArcadeGames WHERE ID = {0}", gamePlayRecordID).Single();

                var userID = gamePlayRecord.UserID;
                var ipID = gamePlayRecord.IPID;
                var gameID = gamePlayRecord.GameID;
Run Code Online (Sandbox Code Playgroud)

代码参考取自http://msdn.microsoft.com/en-us/library/bb361109.aspx