Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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访问LINQ SELECT语句中的另一个属性(方法)_C#_Asp.net_Asp.net Mvc_Linq_Linq To Sql - Fatal编程技术网

C#LINQ访问LINQ SELECT语句中的另一个属性(方法)

C#LINQ访问LINQ SELECT语句中的另一个属性(方法),c#,asp.net,asp.net-mvc,linq,linq-to-sql,C#,Asp.net,Asp.net Mvc,Linq,Linq To Sql,我有一个问题是,是否可以访问LINQ中的另一个属性,以便在LINQ中设置另一个属性的值: var v = ctx.myTableItems .Where(x => x.id== anotherid) .Select(e => new MyViewModel { Title = e.Title, CurrentPrice = e.CurrenctPrice.Value,

我有一个问题是,是否可以访问LINQ中的另一个属性,以便在LINQ中设置另一个属性的值:

  var v = ctx.myTableItems
          .Where(x => x.id== anotherid)
          .Select(e => new MyViewModel
          {
            Title = e.Title,
            CurrentPrice = e.CurrenctPrice.Value,

            ItemID =  e.ItemID.ToString(),
            Transactions= e.Transactions,
            Sales = 
            })
            .Where(x=>x.Sales>0);
大家看看这个,当我设置我的Transactions属性时,我在前一行中设置了Transactions集合,现在我想用前一行中分配的Transactions属性设置我的sales属性:

  Transactions= e.Transactions,
  Sales = e.Transactions.Sum(x=>x.Quantity) // Normaly I'd do it like this
但我想试试这样的东西:

 Sales = Transactions.Sum(x=>x.Quantity) // is this doable ?
因此,我的问题是,是否可以在select语句中使用以前的属性值设置另一个属性?就我而言,这是交易收集

这是否可行,如果可行,如何实现


另外,我想知道这是否可行,因为如果我可以使用这个以前设置的属性值,那么我就可以避免在DB中对我的Transactions表执行两个不必要的查询了?

您不能使用以前的值,因为您不想为每个项调用e.Transactions.Sum()

只需向MyViewModel添加一个方法

public double GetSales()
{
 return Transactions.Sum(x=>x.Quantity);
}

//at the end of your code use:
.Where(x=>x.GetSales()>0);

您不能使用上一个值,因为您不想为每个项目调用e.Transactions.Sum()

只需向MyViewModel添加一个方法

public double GetSales()
{
 return Transactions.Sum(x=>x.Quantity);
}

//at the end of your code use:
.Where(x=>x.GetSales()>0);

我应该在select语句中也这样做吗?不,只是删除销售成员并用方法替换它。啊,好的,但是我如何为数据库中的每个项目填充事务集合?这就是让我困惑的部分。。。因为我的ViewModel类中没有事务集合?另外,每个项目都有一套不同的交易记录。。。所以我想我这样做是必要的?如果您有疑问,可以使用Transactions.ToArray()和for循环。这样,所有数据都是本地数据,而不是每次都枚举;)Max good point thx,但是如果我不先将查询转换为list,然后像这样执行它,那么如何将这个表达式转换为SQL呢?因为我试过这样,它说这个表达式不能翻译?我应该在select语句中也这样做吗?不,只是删除销售成员并用方法替换它。啊,好的,但是我如何为数据库中的每个项目填充事务集合?这就是让我困惑的部分。。。因为我的ViewModel类中没有事务集合?另外,每个项目都有一套不同的交易记录。。。所以我想我这样做是必要的?如果您有疑问,可以使用Transactions.ToArray()和for循环。这样,所有数据都是本地数据,而不是每次都枚举;)Max good point thx,但是如果我不先将查询转换为list,然后像这样执行它,那么如何将这个表达式转换为SQL呢?因为我试过这样,它说这个表达式不能翻译?