linq to sql选择新关键字并指定列别名

时间:2015-05-19 10:50:17

标签: c# asp.net linq

我想将列别名分配给linq中的另一列到sql select new keyword我的代码是

var query=from d in db.tblAttributeDatas
          select new
                 {
                    a=d.strValue,
                    b=a    
                 };

但编译器给我错误。

  

无法解析符号

3 个答案:

答案 0 :(得分:1)

你不能那样使用别名。

您必须使用let这样做:

var query=from d in db.tblAttributeDatas
          let str = d.strValue // hold value here
          select new
                 {
                    a=str,  // now assign here
                    b=str     
                 };

答案 1 :(得分:0)

为b分配相同的值..没有害处..

var query = from d in db.tblAttributeDatas
            select new
            {
                a = d.strValue,
                b = d.strValue    
            };

答案 2 :(得分:0)

基本上,由于对象初始值设定项的性质(即:使用对象文字符号{ ... }初始化对象),因此无法执行此操作。

这段简单的代码......

var x = new { a = 1, b = 2 };

...在IL代码中执行为......

<>f__AnonymousType0<System.Int32,System.Int32>..ctor

因此,您会看到创建了具有双参数构造函数的匿名类型。假设这个构造函数可以看作......

class X
{
    public X(int a, int b) { }
}

很明显,您无法通过

调用此构造函数
var x = new X(1, a);

您必须提供两个值。一个构造函数参数不能&#34; t&#34;借用&#34;另一个论点的价值。