Linq to SQL选择新关键字并分配列别名

本文关键字:分配 别名 关键字 to SQL 选择 Linq | 更新日期: 2023-09-27 17:49:45

我想给linq中的另一个列分配别名,选择new keyword my code is

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

但是编译器给我错误。

无法解析符号a

.

Linq to SQL选择新关键字并分配列别名

不能这样使用别名。

使用let必须这样做:

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

基本上,由于对象初始化器的性质(即:使用对象文字符号{ ... }初始化对象),您不能这样做。

这行简单的代码…

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);

必须提供两个值。一个构造函数参数不能"借用"另一个参数的值。

赋相同的值给b ..没有害处……

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