我是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回答我得到了答案。知道我的问题是如何使用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);
}
由于匿名类型
,我的错误转换失败答案 0 :(得分:5)
char(13)
只是在C#中执行(char)13
的等效(但更有限),它只返回'\r'
。
因此,您可以使用'\r'
或"\r"
。
isnull(x, y)
只相当于C#中的x ?? y
。
所以你会使用类似的东西:
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
名称,则以下代码将返回具有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
是命名类型的唯一方法(通过根本没有命名。)
答案 1 :(得分:0)
如果没有进一步的背景,我会说这样的话:
var query = from obj in context.table
select new {
FADR = obj.column1 + "\r" +
obj.column2 ?? " " + "\r" +
obj.column3 ?? " " + "\r" +
obj.column4 ?? " " + "\r" +
obj.column5 ?? " " + "\r" };