小编Bea*_*ear的帖子

在LINQ中使用自联接查询

我有一个表,其中包含Id作为主键和LastMeterReadingId(引用同一个表的外键)之类的列 - 类似于Parent Meter Reading.

这就是它的样子

我想得到所有尚未使用的行,如Parent.我想避免当抄表是超过一米读数的父母时的情况.

我知道如何加入同一个表,但我不知道如何只选择那些不是父表的记录.这就是没有条件语句的查询的样子.

return (from m in uow.MeterReadingReadWriteRepository.Query()
                join parent in uow.MeterReadingReadWriteRepository.Query() on m.Id equals parent.LastMeterReadingId

                select new MeterReadingDto()
                {
                    (...)
                }).ToList();
Run Code Online (Sandbox Code Playgroud)

你知道如何以有效的方式实现它吗?

问候.

c# sql linq unit-of-work

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

排除列表

我正在寻找最优雅和有效的方法来从一个列表中排除元素,这些元素存在于另一个列表中.让我们说有:

List<A> As which contains more than 1 000 000 records
List<B> Bs which contains more than 100 000 records
Run Code Online (Sandbox Code Playgroud)

我需要从列表As中删除所有As.Id相等的元素Bs.Id.我只需要从包含相同Id的Bs中减少As的元素.操作我重复数百次.解决该问题的最有效(和优雅)方法是什么?我希望LINQNotIn.

foreach(a in As)
{
    if(Bs.Any(b => b.Id == a.Id)
        As.Remove(a);
}
Run Code Online (Sandbox Code Playgroud)

需要很长时间才能完成.

c# linq

0
推荐指数
1
解决办法
75
查看次数

DateTime.Now如何工作?

我发现一些代码看起来像这样:

var obj = new SomeClass();
obj.FirstProperty = Magic.GetFirstProperty();
//...
obj.CreateDate = DateTime.Now;
obj.ModificationDate = obj.CreateDate;
Run Code Online (Sandbox Code Playgroud)

有很多属性,所以我决定重构该代码并使用对象初始化器.

var obj = new SomeClass
{
    FirstProperty = Magic.GetFirstProperty();
    //...
    CreateDate = DateTime.UtcNow,
    ModificationDate = DateTime.UtcNow
};
Run Code Online (Sandbox Code Playgroud)

在对象初始化块中将属性从一个重写到另一个是不可能的(据我所知)并且在块外看起来很糟糕(在我看来).

我决定进行测试,并且我从600到1200个不同的对中进行了10 000 000次迭代.这是代码:

class Program
{
    static void Main(string[] args)
    {
        int j = 0;
        for (int i = 0; i < 10000000; i++)
        {
            var obj = new SomeClass
            {
                First = DateTime.UtcNow,
                Second = DateTime.UtcNow
            };

            if (obj.First != obj.Second)
                Console.WriteLine(j++ + " …
Run Code Online (Sandbox Code Playgroud)

javascript c# datetime

0
推荐指数
1
解决办法
221
查看次数

标签 统计

c# ×3

linq ×2

datetime ×1

javascript ×1

sql ×1

unit-of-work ×1