Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 具有Lightswitch computed属性的Linq到SQL查询筛选器_C#_Linq_Visual Studio Lightswitch_Computed Properties - Fatal编程技术网

C# 具有Lightswitch computed属性的Linq到SQL查询筛选器

C# 具有Lightswitch computed属性的Linq到SQL查询筛选器,c#,linq,visual-studio-lightswitch,computed-properties,C#,Linq,Visual Studio Lightswitch,Computed Properties,根据我在上一个问题中得到的帮助/建议,我设法将问题缩小到一个计算属性 以下是失败的查询筛选: query=query.Where(a=>a.collection.Any(b=>b.Name.StartsWith(c)) 那里的一切似乎都很正常,但是Name导致查询失败Name是b的一个计算属性,当我用标准属性替换它时,查询工作 我不明白这在sql中意味着什么,所以我不知道如何修复/替换它,以便根据该属性进行筛选。如果有人能解释这个问题背后的错误,我们将不胜感激。您应该能够通过以下方式实现您的目标

根据我在上一个问题中得到的帮助/建议,我设法将问题缩小到一个计算属性

以下是失败的查询筛选:

query=query.Where(a=>a.collection.Any(b=>b.Name.StartsWith(c))

那里的一切似乎都很正常,但是
Name
导致查询失败
Name
b
的一个计算属性,当我用标准属性替换它时,查询工作


我不明白这在sql中意味着什么,所以我不知道如何修复/替换它,以便根据该属性进行筛选。如果有人能解释这个问题背后的错误,我们将不胜感激。

您应该能够通过以下方式实现您的目标:

var start = "Joh";
var query = content.Where(entity => 
                  entity.ExampleCollection.Exist(obj => 
                  obj.Name.StartsWith(start));

它将根据集合中是否存在并且是否满足开始条件进行筛选。

基础数据库中未定义计算属性,因此您无法在查询中引用它们。

存在
未定义。如果有帮助的话,我正在使用Lightswitch oob。您指出的
null
集合的潜在问题是真实的,但这不是我试图解决的问题。您现有的查询将引发异常,因为如果不确保
collection
不为null或空,它会在任何时候遇到异常时抛出异常。这就是我所想的。有没有办法绕过这个问题?马特已经一针见血了。这里有一篇写得很好的文章,可以提供一些关于如何处理“计算属性”和EF的见解:@SRQCoder非常好的文章!将继续阅读,看起来很有希望。尽管这个关于直接使用计算属性的答案是正确的,但我还不能接受,因为我正在寻找解决该问题的替代方案/修复方案。@SRQCoder评论中的文章很有用,但与Lightswitch没有直接关系,因为Lightswitch有很多局限性。答案是有帮助的,所以我现在投了赞成票。