相关疑难解决方法(0)

将IQueryable与Linq一起使用

什么是使用IQueryable在LINQ的背景下?

它是用于开发扩展方法还是任何其他目的?

c# linq iqueryable

245
推荐指数
3
解决办法
25万
查看次数

IEnumerable <T>和.Where Linq方法的行为?

我以为我知道一切,IEnumerable<T>但我刚遇到一个我无法解释的案例.当我们调用.在一个linq方法上IEnumerable,执行被推迟到对象被枚举,不是吗?

那么如何解释下面的示例:

public class CTest
{
    public CTest(int amount)
    {
        Amount = amount;
    }

    public int Amount { get; set; }

    public override string ToString()
    {
        return $"Amount:{Amount}";
    }

    public static IEnumerable<CTest> GenerateEnumerableTest()
    {
        var tab = new List<int> { 2, 5, 10, 12 };

        return tab.Select(t => new CTest(t));
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止没什么不好的!但是下面的测试给了我一个意想不到的结果,虽然我的知识IEnumerable<T>.Wherelinq方法:

[TestMethod]
public void TestCSharp()
{
    var tab = CTest.GenerateEnumerableTest();

    foreach (var item in tab.Where(i => i.Amount > 6))
    { …
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable

9
推荐指数
2
解决办法
242
查看次数

实体框架、linq 函数和内存使用

我是 EF 的新手,我曾经使用过数据集、表适配器和存储过程。我刚刚发现了 EF 的简单性,并且发现 EF 方法对我的开发有很大帮助。我有几个问题,我试图寻找他们的答案,但徒劳无功。由于我总是与拥有大桌子的客户合作,因此我进行此调用的事实例如:

_ordersContext.Services.ToList()
Run Code Online (Sandbox Code Playgroud)

这是否意味着整个服务表被加载到内存中?如果答案是肯定的(顺便说一下,我认为答案是肯定的),我们可以通过使用 linq 函数来避免内存成本吗?例如 Take() 方法?(我的意思是如果你只想有 10 条记录,而不需要在内存中加载整个表)。关于其他 linq 函数的相同问题,如 where、first、firstordefault、count 等......我的意思是,我们是否必须加载整个表?是否有一个很好的文档来讨论如何在最佳实践和内存使用方面使用 EF。

c# linq entity-framework

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

为什么我没有收到Null引用异常?

我正在使用LINQ to Entities从数据库中获取一些数据。以下是我的查询。

var location = from l in dbContext.Locations
join e in dbContext.Equipment on l.ID equals e.LocationID into rs1
from e in rs1.DefaultIfEmpty()
where ids.Contains(l.ID)
select new
{
    EquipmentClass = e,
    LocationID = l.ID,
    LocationName = l.Name,
    EquipmentName = e == null ? null : e.Name,
    Description = e == null ? null : e.Description,
    InServiceStatus = e == null ? false : e.InServiceStatus,
    EquipmentType = e.EquipmentType.Name
};

foreach (var item in location)
{
    // some logic
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中, …

c# linq linq-to-entities

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

是否延期执行

关于DEFERRED EXECUTION,以下评论是否正确?

1. var x = dc.myTables.Select(r=>r);//yes
2. var x = dc.myTables.Where(..).Select(r=>new {..});//yes
3. var x = dc.myTables.Where(..).Select(r=>new MyCustomClass {..});//no
Run Code Online (Sandbox Code Playgroud)

换句话说,我一直认为投射自定义类对象总是会导致急切的执行.但是我找不到支持/否认它的引用(虽然我看到的结果与它相矛盾,因此帖子)

c# linq-to-sql

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

不应该在LINQ中推迟求和方法

我有以下代码:

List<int> no = new List<int>() { 1, 2, 3, 4, 5 };
var res2 = no.Sum(a => a * a);
Console.WriteLine(res2);
no.Add(100);
Console.WriteLine(res2);
Run Code Online (Sandbox Code Playgroud)

我期待以下结果:

55
10055

但都是55岁

55
55

我在这里看到的是关于延期评估,但没有帮助.Sum是一种扩展方法,但结果不是我提到的.为什么?

c# linq

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

选择Linq不调用方法

我有这个代码Linq c#

from r in Employer.Restrictions 
select new RestrictionDto(r);
Run Code Online (Sandbox Code Playgroud)

雇主限制在注册,但RestrictionDto的构造函数从未被调用,只返回null.我在restrictionDto中放了一个breakPoint,代码永远不会停止.

我以前从未见过这个问题.我在代码中有很多这样的代码并且工作正常.

有人可以帮忙吗?

c# linq

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