我是 Entity 框架的新手,任何人都可以告诉我如何将以下查询写入 Entity 框架。
select column1 + char(13) +isnull(column2,space(1))+char(13)+isnull(column3,space(1))+char(13)+isnull(column4,space(1)) +char(13)+isnull(olumn5,space(1)) as FADRS
FROM table
将上述查询转换为 Entity Framework 。
通过使用 Jon answer,我得到了答案。知道我的问题是如何使用iqueryable
IQuer<string> Madr = from b in context.table
where b.column1 == txtaddrss.Text
select new
{FADR = b.column2 + '\r' +
(b.column3 ?? " ") + '\r' +
(b.column4 ?? " ") + '\r' +
(b.column5 ?? " ") + '\r' +
(b.column6 ?? " ")};
foreach(string something in Madr)
{
MessageBox.Show(something);
}
由于匿名类型,我收到错误转换失败
最佳答案
char(13)
只是相当于(虽然更有限)(char)13
在 C# 中,它只会返回 '\r'
.
因此您可以使用 '\r'
或 "\r"
.
isnull(x, y)
相当于x ?? y
在 C# 中。
所以你会使用类似的东西:
var query = from item in TableSource select
item.column1 + '\r' +
(item.column2 ?? " ") + '\r' +
(item.column3 ?? " ") + '\r' +
(item.column4 ?? " ") + '\r' +
(item.column5 ?? " ");
TableSource
是您获取表引用的任何方式(context.Table
或其他)。
query
将是 IQueryable<string>
调用时返回相关字符串。如果你真的想要 FADRS
name 来自您的示例,那么以下内容将代替字符串返回带有 FADRS
的匿名对象属性:
var query = from item in TableSource select
new {FADRS = item.column1 + '\r' +
(item.column2 ?? " ") + '\r' +
(item.column3 ?? " ") + '\r' +
(item.column4 ?? " ") + '\r' +
(item.column5 ?? " ")};
编辑:
上面的第一个例子可以用作:
foreach(string something in query)
MessageBox.Show(something);
第二个例子为:
foreach(var something in query)
MessageBox.Show(something.FADR);
与第一个var
是可选的速记,第二个你必须使用 var
因为涉及的类型是匿名的,因此 var
是命名类型的唯一方法(根本不命名)。
关于c# - Entity Framework 中的 Sql Char(13) 和 isnull 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869912/