标签: linq-to-entities

"具有语句主体的lambda表达式无法转换为表达式树"

在使用EntityFramework时,我A lambda expression with a statement body cannot be converted to an expression tree在尝试编译以下代码时收到错误" ":

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
}).ToArray();
Run Code Online (Sandbox Code Playgroud)

我不知道错误意味着什么,最重要的是如何解决它.有帮助吗?

c# linq linq-to-entities entity-framework

160
推荐指数
8
解决办法
9万
查看次数

LINQ表达式中的String.IsNullOrWhiteSpace

我有以下代码:

return this.ObjectContext.BranchCostDetails.Where(
    b => b.TarrifId == tariffId && b.Diameter == diameter
        || (b.TarrifId==tariffId && !string.IsNullOrWhiteSpace(b.Diameter))
        || (!b.TarrifId.HasValue) && b.Diameter==diameter);
Run Code Online (Sandbox Code Playgroud)

当我尝试运行代码时出现此错误:

LINQ to Entities无法识别方法'Boolean IsNullOrWhiteSpace(System.String)'方法,并且此方法无法转换为商店表达式."

如何解决这个问题并编写代码比这更好?

c# linq null lambda linq-to-entities

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

不允许新事务,因为在会话LINQ To Entity中运行其他线程

关于为什么这可能会破裂的任何想法?

foreach (var p in pp)
{
    ProjectFiles projectFile = (ProjectFiles)p;
    projectFile.Status = Constants.ProjectFiles_ERROR;
    projectFile.DateLastUpdated = DateTime.Now;
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

我读到问题的解决方法是在foreach循环之前一次性检索结果.

但我不这样做吗?"pp"是我案例中的结果集合

c# linq linq-to-entities

140
推荐指数
2
解决办法
8万
查看次数

LINQ to Entities中仅支持无参数构造函数和初始值设定项

我在这个linq表达式中有这个错误:

var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              (
                                  nalTmp.Dziecko.Imie,
                                  nalTmp.Dziecko.Nazwisko,
                                  nalTmp.Miesiace.Nazwa,
                                  nalTmp.Kwota,
                                  nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  nalTmp.DataRozliczenia,
                                  nalTmp.TerminPlatnosci
                              )).ToList();
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?我尝试任何表达式的组合......:/

c# linq-to-entities

124
推荐指数
6
解决办法
9万
查看次数

LINQ to Entities不支持指定的类型成员"Date".仅初始化程序,实体成员和实体导航属性

Entity Framework中使用此代码我收到以下错误.我需要获取特定日期的所有行,采用DateTimeStart此格式的DataType类型2013-01-30 12:00:00.000

码:

 var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
                    .Where(x =>  x.DateTimeStart.Date == currentDateTime.Date);
Run Code Online (Sandbox Code Playgroud)

错误:

base {System.SystemException} = {"The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."}
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决它?

linq linq-to-entities entity-framework-4

124
推荐指数
7
解决办法
9万
查看次数

如何使用Linq在每个组中获得第一条记录

考虑以下记录:

   Id          F1            F2             F3 
 -------------------------------------------------
   1           Nima          1990           10
   2           Nima          1990           11
   3           Nima          2000           12
   4           John          2001           1
   5           John          2002           2 
   6           Sara          2010           4
Run Code Online (Sandbox Code Playgroud)

我想根据F1字段进行分组并排序依据Id并从类似于这些记录的组的第一个记录中获取所有字段:

   Id          F1            F2             F3 
 -------------------------------------------------
   1           Nima          1990           10
   4           John          2001           1
   6           Sara          2010           4
Run Code Online (Sandbox Code Playgroud)

我怎么能用linq做到这一点?

c# linq linq-to-entities c#-4.0

123
推荐指数
3
解决办法
9万
查看次数

如何只比较EF中DateTime的日期组件?

我有两个日期值,一个已存储在数据库中,另一个由用户使用DatePicker选择.用例是从数据库中搜索特定日期.

先前在数据库中输入的值始终具有12:00:00的时间分量,其中从选择器输入的日期具有不同的时间分量.

我只对日期组件感兴趣,并且想要忽略时间组件.

在C#中进行这种比较的方法有哪些?

另外,如何在LINQ中执行此操作?

更新:在LINQ to Entities上,以下工作正常.

e => DateTime.Compare(e.FirstDate.Value, SecondDate) >= 0
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities entity-framework datetime-comparison

115
推荐指数
8
解决办法
14万
查看次数

实体框架4 Single()vs First()vs FirstOrDefault()

我有一个时间的魔鬼找到一个比较查询单个项目的不同方法,以及何时使用每个项目.

有没有人有一个比较所有这些的链接,或快速解释为什么你会使用一个而不是另一个?还有更多我不了解的运营商吗?

谢谢.

.net linq linq-to-entities entity-framework entity-framework-4

111
推荐指数
4
解决办法
7万
查看次数

LINQ to Entities无法识别该方法

尝试执行linq查询时出现以下错误:

LINQ to Entities无法识别方法'Boolean IsCharityMatching(System.String,System.String)'方法,并且此方法无法转换为商店表达式.

我已经阅读了很多以前的问题,人们会得到相同的错误,如果我理解正确,那是因为LINQ to Entities需要将整个linq查询表达式转换为服务器查询,因此你不能调用外部方法在里面.我无法将我的场景转换成有效的东西,我的大脑开始融化,所以我希望有人能指出我正确的方向.我们正在使用实体框架和规范模式(我对两者都是新手).

这是使用规范的代码:

ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);

charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
Run Code Online (Sandbox Code Playgroud)

这是linq表达式:

public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
    return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
Run Code Online (Sandbox Code Playgroud)

这是IsCharityMatching方法:

public bool IsCharityMatching(string name, string referenceNumber)
{
    bool exists = true;

    if (!String.IsNullOrEmpty(name))
    {
        if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
            !this.alias.ToLower().Contains(name.ToLower()) &&
           !this.charityId.ToLower().Contains(name.ToLower()))
        {
            exists = false;
        }
    }

    if (!String.IsNullOrEmpty(referenceNumber))
    {
        if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
        {
            exists = false;
        }
    }

    return exists;
}
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请与我们联系.

非常感谢,

Annelie

.net linq linq-to-entities entity-framework specification-pattern

111
推荐指数
1
解决办法
11万
查看次数

LINQ to Entities区分大小写比较

这不是LINQ to Entities中区分大小写的比较:

Thingies.First(t => t.Name == "ThingamaBob");
Run Code Online (Sandbox Code Playgroud)

如何与LINQ to Entities实现区分大小写的比较?

.net c# linq-to-entities entity-framework-4

110
推荐指数
4
解决办法
6万
查看次数