Linq Where子句与Conditional相结合



我有点问题。我有一个Linq语句,它过滤数据库中的对象列表。

假设我有以下元素列表(每个"{…}"代表列表中的一个对象):

{id: 288, id_price_table: 1},
{id: 295, id_price_table: 1},
{id: 295, id_price_table: 2},
{id: 295, id_price_table: 3}

我有两个参数,一个是StandardPriceTable,另一个是CurrentUserPriceTable。在我的情况下,这些参数如下:

Int32 StandardPriceTable = 1;
Int32 CurrentUserPriceTable = 2;

现在我想要实现的是:制作一个where子句,它接受条件。如果id是唯一的(因此属于StandardPriceTable),它会将当前对象返回到列表。

但是,如果相同的ID属于许多ID_price_table,那么它应该验证哪个对象属于CurrentUserPriceTable,只返回该对象,而不包括具有相同ID的其他对象。

我知道我可以通过foreach语句实现这一点,但这会导致数据库查询,我希望暂时避免。

根据我告诉的条件,查询的结果将等于:IQueryable具有以下itens:

{id: 288, id_price_table: 1},
{id: 295, id_price_table: 2}

怎么样:

var result = from item in Items
             group item by item.Id into g
             select g.Single(i => g.Count() == 1 ? 
                                  true : 
                                  i.Id_price_table == CurrentUserPriceTable);

或使用lambdas:

var result2 = Items.GroupBy(i => i.Id)
                   .Select(g => g.Single(i => g.Count() == 1 ? 
                                              true : 
                                              i.Id_price_table == CurrentUserPriceTable));

相关内容

  • 没有找到相关文章

最新更新