小编Pug*_*ugz的帖子

EF - 区别于IQueryable?

假设我有这个我希望得到第42组中的每个人,但我希望获得数据库中每个唯一名字的IQueryable(PS - 我知道我可以在Select之后调用AsQueryable()但这不是我的意思我有兴趣做 - 我希望数据库执行distinct,而不是程序):

MyEfContextContainer db = new MyEfContextContainer();
IQueryable<string> uniqueFirstNames = 
    db.People
    .Where(x=> x.GroupId == 42)
    .DistinctBy(c=> c.FirstName)
    .Select(c=> c.FirstName);
Run Code Online (Sandbox Code Playgroud)

从我所知道的EF/LINQ to Entities如何处理DistinctBy扩展方法,调用DistinctBy时执行存储查询,并在数据库中找到与Where匹配的所有项目列表,然后C#从中返回IEnumberable DistinctBy方法匹配发送到DistinctBy的表达式.

如果列表中有数百万个名称,则效率非常低.

我有兴趣能够有效地执行此操作,希望通过使商店查询仅返回表中所有唯一FirstNames的结果集.例如,我可能希望将IQueryable作为存储库的一部分返回,因为性能原因不能通过DistinctBy抓取和处理数百万个项目来返回唯一值.这会将请求处理时间增加到不可接受的水平.

有没有办法做到这一点?我错过了什么吗?这只是一个简单的例子,显然在一个真实的应用程序中,比字符串更复杂的对象将是对存储库的查询主题.

linq-to-entities entity-framework

10
推荐指数
2
解决办法
3045
查看次数

是否有CRC的C#/ .NET标准实现?

我知道System.Security.Cryptography中存在SHA1和SHA256的实现.

有内置可以计算CRC哈希值的东西吗?

c# crc

8
推荐指数
1
解决办法
7419
查看次数

#define加倍 - 不同的价值?

以下是我定义相同值的两种不同方式.我希望它作为64位(双精度)浮点数(也称为double)存在.

#define THISVALUE -0.148759f

double myDouble = -0.148759;
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作

double tryingIt = THISVALUE;
Run Code Online (Sandbox Code Playgroud)

我在调试期间查看值或打印它,我可以看到它分配tryingIt-0.14875899255275726

我知道浮点数并不准确,但这只是一个疯狂的差异,真正抛弃了我的数学.直接在顶部代码块中分配double,在调试器中给出了-0.14875900000000000的值- 正是它应该是什么.

什么事情的想法?

c c++ double c-preprocessor

6
推荐指数
2
解决办法
3万
查看次数

如何使用实体框架更改应用程序名称

在 SQL Management Studio 中,任何连接都有一个与其一起列出的应用程序......对于每个 EF 连接,我只说“EntityFramework”作为应用程序名称。我如何更改它以便我可以在此字段中实际输入应用程序的名称?

sql-server entity-framework

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

实体框架代码首先在任何地方使用SQL Server datetime2而不是datetime

我知道这可以在单个属性上使用Fluent API来完成,但我希望在我的模型中使用.NET DateTime的任何地方都能自动执行此操作.以下是执行单个属性的示例:

modelBuilder.Entity<T>() .Property(f => f.MyDateTimeProperty) .HasColumnType("datetime2");

但是我不希望它只在这一个属性上自动发生.在Model First中有一个修复,通过编辑T4生成模板,所以我知道它可以在那里完成但我在Code First中需要相同的东西.

entity-framework ef-code-first sql-server-2012

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