Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq在C中创建期间选择自引用#_C#_Linq - Fatal编程技术网

C# Linq在C中创建期间选择自引用#

C# Linq在C中创建期间选择自引用#,c#,linq,C#,Linq,基本上,我想要的答案与这里的答案相同,但用C#: 我的代码是: private List<myObject> myFunction() { return myList.Select(l => new myObject { propA = 6, propB = 3, propC = propA + propB } ).ToList(); } private List myFunction() {

基本上,我想要的答案与这里的答案相同,但用C#:

我的代码是:

private List<myObject> myFunction()
{
    return myList.Select(l => new myObject
    {
        propA = 6,
        propB = 3,
        propC = propA + propB
    }
    ).ToList();
}
private List myFunction()
{
返回myList.Select(l=>newmyobject
{
propA=6,
propB=3,
propC=propA+propB
}
).ToList();
}
当然,它不起作用,因为我不能以这种方式引用propA和propB。什么是正确的方法


谢谢

您可以在lambda表达式中使用body:

private List<myObject> myFunction()
{
    return myList.Select(l => 
    {
        var myObject = new myObject
        {
            propA = 6,
            propB = 3        
        };

        myObject.propC = myObject.propA + myObject.propB;

        return myObject;

    }).ToList();
}

如果不使用Linq to对象(即lambda必须是表达式,而不是Linq to SQL/实体框架中的方法委托),则无需设置
propC

),您可以借助匿名对象和两条Select语句来完成此操作:

return myList
    .Select(l => new {
        propA = 6,
        propB = 3})
    .Select(x => new myObject{
        propA = x.propA,
        propB = x.propB,
        propC = x.propA + x.propB
    })
    .ToList();

可以考虑使<代码> PROC 可计算:即声明为<代码>公共int PROC= > PROPA+PROB;<代码>您缺少
返回myObject
return myList
    .Select(l => new {
        propA = 6,
        propB = 3})
    .Select(x => new myObject{
        propA = x.propA,
        propB = x.propB,
        propC = x.propA + x.propB
    })
    .ToList();