我有一个列表,我选择一个项目。基于此项目的某些字段,我想过滤另一个控件中的选项列表。
像这样的人:
Select * from choiceItems Where choiceItem.ID = (Select ID from anotherTable where anotherTable.ID = selectedItem.ID)
问题是可能有更多的ID返回。也许我想要所有带有ID = {3,2,1}等的choiceItems。
我无法在服务器上预处理查询,因为我的参数取决于列表中的选定项目。如果我尝试在查询编辑器中过滤结果,我只能指定参数,该参数只能是单个值(f.e.ID = 2)。
我如何在silverlight中做到这一点?
另外,另一个不相关的小问题:在lightswitch中加载自定义控件时是否可以显示等待光标(现在它只显示一个灰色区域,直到加载数据和控件)。
答案 0 :(得分:0)
从choiceItems中选择*其中choiceItem.ID =(从中选择ID) anotherTable where anotherTable.ID = selectedItem.ID)
这是一个多对多的场景,你需要用查询参数制作一个WCF RIA服务,很多工作只是为了过滤。另一种方法是使这些表格相关。
答案 1 :(得分:0)
即使从列表中选择了查询参数,您也应该能够预处理查询。然后,您可以使用LINQ返回choiceItems
的子集,或者根据所选参数跳过LINQ,它将返回所有choiceItems
。
我在回答SO问题时给出了一个详细的例子:
Is there a way to create a search screen in Lightswitch based on a dropdown
答案 2 :(得分:0)
没有确切的语法,但应该是这样的:
首先使用LINQ获取ID
var FilterOnThisId=this.Query1.Where(x=>x.ID==selectedItem.ID).FirstOrDefault();
然后查询你想要的收藏品
var filtedItems=this.Query2.Where(x=>x.ID==FilterOnThisId);