[英]What data type does C# return in a SQL CE query (using WebMatrix)?
我花了一些时间在Google上搜索,并在这里进行了一些研究: http : //msdn.microsoft.com/
但是,我似乎找不到这个问题的简单答案:
当我从数据库中返回某些数据时,将哪种C#数据类型返回到以下row
变量,如下所示:
selectQueryString = "SELECT * FROM ContentObjects INNER JOIN TitleObjects ON ContentObjects.ObjectID = TitleObjects.ObjectID WHERE location='home' AND type = 'title' AND TitleObjects.ObjectID = @0";
row = db.QuerySingle(subSelectQueryString, someNumber);
我问是因为我需要在使用它之前在页面的开头声明row
,但是必须对其进行初始化,而且在不知道数据类型的情况下我似乎无法做到这一点。
更新:
顺便说一句, var db = Database.Open("tableName")
QuerySingle方法返回dynamic
类型(请参阅http://msdn.microsoft.com/zh-cn/library/dd264736.aspx )。 架构中的字段名称成为动态对象的属性。 编译器(或者在dynamic
的情况下,是运行时绑定器)只会认为您在尝试使用方括号括起属性的方法,例如
@row.linktext()
除非您明确定义行对象,否则它将使列基于SQL Server类型。 您将必须从SQL Server知道ContectObjects表的定义。
它返回一个dynamic
数据类型
dynamic
是C#4.0中的新数据类型。 它只是在运行时处理的数据类型。 在编译后动态找出对象的数据类型,例如
selectQueryString = "SELECT * FROM ContentObjects INNER JOIN TitleObjects ON ContentObjects.ObjectID = TitleObjects.ObjectID WHERE location='home' AND type = 'title' AND TitleObjects.ObjectID = @0";
row = db.QuerySingle(subSelectQueryString, someNumber);
var the_field_content = row.location;
如果您的查询方法是db.Query
,它将返回IEnumerable<object>
,这为您提供了使用LINQ方法或对象方法(例如row.Length;
更深入挖掘的额外优势row.Length;
或row.Skip(5).Take(2).Select(row);
尝试将变量行声明为var,在Visual Studio中命中一个断点,然后将鼠标悬停在该行上。 数据类型将显示出来。它是dynamic
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.