使用LINQ Select和Lambda避免2100 rpc限制

时间:2013-10-08 10:30:34

标签: c# linq rpc

我有以下查询。在其中我正在做一个Take(2100)以避免施加2100 rpc限制。

 var query =
     from result in staging_sparc_sophis_trade.AsQueryable()
     where deals.Take(2100).Contains(result.TRADE_ID)
     select new traded_product()
     {                   
        Deal = result.TRADE_ID,
        CostCentre = result.FTP_COSTCTR,
       InvolvedPartyId = R_GEN_002(result.hsbc_source_system_instance, "", result.CNPTY_ACRONYM
     };

我想知道的是,有没有办法可以删除Take(2100)部分并将其替换为Deal行中的lambda语句,以检查交易是否在列表中(交易)我正在搜索为?

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的两种方法。 解决方案1.如果我直接在SqlServer物理机上运行查询,则不会发生此问题。

在下一部分进行过滤: 删除“Where子句”

var query =
 from result in staging_sparc_sophis_trade.AsQueryable()
 --where deals.Take(2100).Contains(result.TRADE_ID)
 select new traded_product()
 {                   
    Deal = result.TRADE_ID,
    CostCentre = result.FTP_COSTCTR,
   InvolvedPartyId = R_GEN_002(result.hsbc_source_system_instance, "", result.CNPTY_ACRONYM
 };

在代码的这一部分添加过滤部分。它运行得慢一点,但仍然可以解决问题。我认为它运行速度较慢,因为我在每个单独的itteration中搜索完整列表。

foreach (var result in query)
{
if (!deals.contains(result.TRADE_ID))
{
--Actions
}
}