实体框架中的替换 Sql Char(13) 和 isnull 是什么?



我是实体框架的新手,任何人都可以告诉我如何将以下查询写入实体框架。

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

将上述查询转换为实体框架。

通过使用乔恩的答案,我得到了答案。知道我的问题是如何使用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)只是在 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是命名类型的唯一方法(根本不命名)。

如果没有进一步的上下文,我会这样说:

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" };         

最新更新