Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ等效于字符串。可在LINQ中使用的连接到实体_C#_Entity Framework_Linq - Fatal编程技术网

C# LINQ等效于字符串。可在LINQ中使用的连接到实体

C# LINQ等效于字符串。可在LINQ中使用的连接到实体,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个元数据类,其中包含一些自定义属性,以便于数据访问。不过,我遇到的一个问题是,当我尝试在LINQ语句中使用此属性时,会出现此错误 The specified type member 'CrewCodesStr' is not supported in LINQ to Entities. 我知道为什么我会得到它,我想知道是否有其他方法可以做到这一点,以允许在LINQ语句中使用该属性 这里是酒店: public string CrewCodesStr { get { return s

我有一个元数据类,其中包含一些自定义属性,以便于数据访问。不过,我遇到的一个问题是,当我尝试在LINQ语句中使用此属性时,会出现此错误

The specified type member 'CrewCodesStr' is not supported in LINQ to Entities.
我知道为什么我会得到它,我想知道是否有其他方法可以做到这一点,以允许在LINQ语句中使用该属性

这里是酒店:

public string CrewCodesStr
{
    get { return string.Join(", ", CrewCodesList); }
}
下面是一个查询失败的示例

query = query.Where(wo => searchCriteria.crewCode.Contains(wo.CrewCodesStr));

您可以执行
字符串。从数据库中选择所需信息后加入
。如果执行
ToList()
,将从数据库中枚举所需的数据。然后你可以做任何你想做的事情,因为它会在
ToList()之后在内存中运行


您可以执行
字符串。从数据库中选择所需信息后加入
。如果执行
ToList()
,将从数据库中枚举所需的数据。然后你可以做任何你想做的事情,因为它会在
ToList()之后在内存中运行


您可以执行
字符串。从数据库中选择所需信息后加入
。如果执行
ToList()
,将从数据库中枚举所需的数据。然后你可以做任何你想做的事情,因为它会在
ToList()之后在内存中运行


您可以执行
字符串。从数据库中选择所需信息后加入
。如果执行
ToList()
,将从数据库中枚举所需的数据。然后你可以做任何你想做的事情,因为它会在
ToList()之后在内存中运行



你能发布你正在运行的完整查询吗?看起来真正的问题是为什么你在模型的多个字段中表示相同的信息。如果您的数据结构是标准化的,那么您根本不需要模型中的逻辑……这是一个奇怪的例子,似乎没有多大用处。如果您的搜索条件是“B,D”,那么如果CredCodeStr是您认为匹配的“A,B,C,D”,它将失败。只需将您的查询重写为
query=query.Where(wo=>searchCriteria.crewCode.All(cc=>wo.CrewCodesList.Contains(cc))
foreach(searchCriteria.crewCode中的var cc)query=query.Where(wo=>wo.CrewCodesList.Contains(cc))@RobertMcKee你是对的,这是一个很没用的例子,原来是我还没来得及更新的旧代码。一个简单的例子是
var wo=query.Where(x=>x.crewcodestr.Contains(“1234”)
这失败了,因为我还没有将数据放入内存。你能发布你正在运行的完整查询吗?看起来真正的问题是为什么你在模型的多个字段中表示相同的信息。如果你的数据结构正常化了,你就根本不需要模型中的逻辑了……这是一个很奇怪的例子,似乎不适用于be非常有用。如果您的搜索条件是“B,D”,那么如果credcodest是“A,B,C,D”,您会认为匹配,那么它将失败。只需将您的查询重写为
query=query.Where(wo=>searchCriteria.crewCode.All(cc=>wo.CrewCodesList.Contains(cc));
foreach(var cc in searchCriteria.crewCode)query=query.Where(wo=>wo.CrewCodesList.Contains(cc));
@RobertMcKee你是对的,这是一个非常无用的示例,原来是我还没有更新的旧代码。一个简单的示例是
var wo=query.Where(x=>x.crewcodestr.Contains(“1234”)
这失败了,因为我还没有将数据放入内存。你能发布你正在运行的完整查询吗?看起来真正的问题是为什么你在模型的多个字段中表示相同的信息。如果你的数据结构正常化了,你就根本不需要模型中的逻辑了……这是一个很奇怪的例子,似乎不适用于be非常有用。如果您的搜索条件是“B,D”,那么如果credcodest是“A,B,C,D”,您会认为匹配,那么它将失败。只需将您的查询重写为
query=query.Where(wo=>searchCriteria.crewCode.All(cc=>wo.CrewCodesList.Contains(cc));
foreach(var cc in searchCriteria.crewCode)query=query.Where(wo=>wo.CrewCodesList.Contains(cc));
@RobertMcKee你是对的,这是一个非常无用的示例,原来是我还没有更新的旧代码。一个简单的示例是
var wo=query.Where(x=>x.crewcodestr.Contains(“1234”)
这失败了,因为我还没有将数据放入内存。你能发布你正在运行的完整查询吗?看起来真正的问题是为什么你在模型的多个字段中表示相同的信息。如果你的数据结构正常化了,你就根本不需要模型中的逻辑了……这是一个很奇怪的例子,似乎不适用于be非常有用。如果您的搜索条件是“B,D”,那么如果credcodest是“A,B,C,D”,您会认为匹配,那么它将失败。只需将您的查询重写为
query=query.Where(wo=>searchCriteria.crewCode.All(cc=>wo.CrewCodesList.Contains(cc));
foreach(var cc in searchCriteria.crewCode)query=query.Where(wo=>wo.CrewCodesList.Contains(cc));
@RobertMcKee你是对的,这是一个非常无用的示例,原来是我还没有更新的旧代码。一个简单的示例是
var wo=query.Where(x=>x.crewcodestr.Contains(“1234”)
这失败了,因为我还没有将数据放入内存中。这是我最终使用的,但我没有在这里进行连接,而是能够调用Crewcodestr属性,因为对象现在在内存中,我正在使用LINQ to对象而不是实体。谢谢!这是我最终使用的,但是我没有在这里进行连接,而是由于对象现在在内存中,我可以调用CrewCodesStr属性,并且我正在使用LINQ to对象而不是实体。谢谢!这就是我最终使用的,但是我可以调用CrewCodesStr属性,而不是在这里进行连接,因为对象现在在内存中,我正在使用L
var result = MyObjects.Select(x => new
{
    ID = x.ID,
    CrewCodes = x.CrewCodes
})
.AsEnumerable()//enumerate the queryable
.Select(x => new
{
    ID = x.ID,
    String = string.Join(",",x.CrewCodes)
});