小编Udo*_*now的帖子

使用 OrderBy 扩展时的默认比较器

出于好奇:使用以下扩展方法对一堆对象进行排序时使用了什么比较器?

OrderBy(x=> x)
Run Code Online (Sandbox Code Playgroud)

背景:我必须检查两个 ISet< T > 实例是否包含相同的元素并考虑使用

bool setsEqual = MySet.SequenceEqual(OtherSet);
Run Code Online (Sandbox Code Playgroud)

方法。由于集合中包含的那些元素的顺序未定义并且可能不同,因此在内部顺序不相同的情况下,SequenceEqual 将失败。所以我必须明确定义一个订单。由于顺序算法本身是完全不相关的,只要它是稳定的,我只是使用了一个“身份”lambda 表达式:

bool setsEqual = MySet.OrderBy(x => x).SequenceEqual(OtherSet.OrderBy(x => x);
Run Code Online (Sandbox Code Playgroud)

但是“比较对象本身”对代码意味着什么?由于此 OrderBy 扩展方法是通用方法,因此必须有一个默认的比较算法,该算法能够在不了解更多信息的情况下对对象进行排序,这意味着必须将排序比较委托给集合的类型元素本身。是否有元素类型必须支持的接口,或者是否有默认比较器(可能正在比较对象的内部内存地址)?

c# compare

5
推荐指数
1
解决办法
1142
查看次数

Rhino Mock Expect()方法触发对预期函数的调用

我在C#中使用Rhino Mocks 3.6并且在模拟对象而不是接口时遇到问题.有人可以解释为什么在定义期望时实际调用方法?

   public class MockingBird
   {
      public void TestMethod()
      {
         throw new Exception("Method call!");
      }
   }
Run Code Online (Sandbox Code Playgroud)

...

 [TestMethod]
  public void TestMock()
  {
     var mockedMockingBird = MockRepository.GenerateStrictMock<MockingBird>();
     mockedMockingBird.Expect(x => x.TestMethod());
  }
Run Code Online (Sandbox Code Playgroud)

c# unit-testing rhino-mocks

4
推荐指数
1
解决办法
602
查看次数

FluentNhibernate:查询以检索不同的值

在DB2 LUW 9.7数据库上使用FluentNhibernate 1.3.0.0,NHibernate 3.3.1.4000.

我想从一个表/实体中获取一些不同的数据.在SQL中,很简单:

select distinct Corporation, CalculationDate, ValuationRule
from MySchema.MyTable
where State == 0
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试使用Linq获取这些数据,但它无法正常工作......

首先尝试使用select:

var result = Session.Query<MyEntity>()
        .Where( x => x.State == State.Pending)
        .Select(
           x =>
              new
              {
                 Corporation = x.Corporation,
                 CalculationDate = x.CalculationDate,
                 ValuationRule = x.ValuationRule,
              }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

产生的异常:此SelectClauseVisitor不支持表达式类型'NhDistinctExpression'.

第二次尝试,使用Groupby并只获取密钥:

var result = Session.Query<MyEntity>()
        .Where( x => x.State == State.Pending)
        .GroupBy(
           x =>
              new
              {
                 Corporation = x.Corporation,
                 CalculationDate = x.CalculationDate,
                 ValuationRule = x.ValuationRule,
              }).Select( x => x.Key).ToList();
Run Code Online (Sandbox Code Playgroud)

结果异常:"无法执行查询".抱怨选择术语中所述的group by子句中缺少的另一个字段"Model".这让我很困惑,因为表中存在指定的字段,但我不想在该用例中使用该字段...

我错过了什么?

c# linq nhibernate fluent-nhibernate

2
推荐指数
1
解决办法
4635
查看次数