我正在使用LINQ查询从数据库中获取数据,并在LINQ查询中进行连接,
(
from accountTransaction in AccountTransactions
join xlkpQualifier in Enumerations on
accountTransaction.LkpQualifier.ToString() equals xlkpQualifier.Value
select top accountTransaction)
.Take(10);
我在accountTransaction.LkpQualifier.ToString()
上得到Exception,即System.ToString()不能在LINQ实体中使用。
但是我在转换为Join上的字符串时遇到问题。 我该怎么办?
答案 0 :(得分:-1)
在您向我们提供有关字段LkpQualifier
和xlkpQualifier
的SQL类型的更多信息之前,我将回答如下:
您应该(1)更改您的表数据架构并设置相同的数据类型,或(2)编写LINQ查询的原始SQL版本并执行查询
using (var db = new Entities())
{
string myQuery = "SELECT * FROM Table";
var result = new ObjectQuery<DbDataRecord>(myQuery, db);
var resultList = result.ToList();
}
在原始SQL查询本身中,您可能必须使用正确类型的CAST
函数:
CAST(Enumerations.xlkpQualifier AS System.Int32)
还有一种方法可以在不使用EF的情况下编写原始SQL(当您的表没有主键集并且您无权更改它时非常有用):
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
using (var cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Table";
var result = cmd.ExecuteScalar(); // or other variations
}
}