Linq SELECT与ExecuteQuery [英] Linq SELECT with ExecuteQuery

查看:58
本文介绍了Linq SELECT与ExecuteQuery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到了错误:

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

The type 'System.Int32[]' must declare a default (parameterless) constructor in order to be constructed during mapping.

使用代码:

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];

我知道这是错误的,但是有人可以告诉我如何正确地进行操作,而不必创建新对象吗?

I know this is wrong, but can someone show me how to do it correctly without needing to create a new object preferably?

推荐答案

此查询的结果不是 int [] ,而是一行带数字的

Result of this query is not int[] but one row with numbers.

不好的解决方案:用于每个数字:

not good solution: use for every number:

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();

或创建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();

或创建课程...

这篇关于Linq SELECT与ExecuteQuery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆