0

我花了一些时间谷歌搜索和一些时间在这里研究: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")

4

3 回答 3

2

QuerySingle 方法返回一个dynamic类型(参见http://msdn.microsoft.com/en-us/library/dd264736.aspx)。架构中的字段名称成为动态对象的属性。编译器(或在 的情况下dynamic,运行时绑定器)只会认为您正在尝试调用方法,如果您在属性后面加上括号,例如

@row.linktext()
于 2013-05-28T18:42:50.723 回答
1

它返回一个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.Skip(5).Take(2).Select(row);

尝试将变量 row 声明为 var,在 Visual Studio 中对其设置断点并将鼠标悬停在其上。数据类型将显示出来。它是dynamic

于 2013-05-29T07:09:57.050 回答
1

除非您明确定义行对象,否则它将基于 SQL Server 类型的列。您必须知道 SQL Server 中 ContectObjects 表的定义。

于 2013-05-28T16:05:42.120 回答