Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/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
Silverlight Linq中的延迟查询迭代到实体_Silverlight_Linq_Mvvm - Fatal编程技术网

Silverlight Linq中的延迟查询迭代到实体

Silverlight Linq中的延迟查询迭代到实体,silverlight,linq,mvvm,Silverlight,Linq,Mvvm,我在理解LINQ to Entites查询时遇到了一个问题,该查询没有提供所需的结果。我有以下代码,它应该执行延迟查询并在SilverlightDataGrid中显示结果 public List<DispIRTSiteReports> DisplayIRTSiteReportsFilOn(List<IssueTypes> issueType, DateTime fDate, DateTime tDate) { try {

我在理解LINQ to Entites查询时遇到了一个问题,该查询没有提供所需的结果。我有以下代码,它应该执行延迟查询并在SilverlightDataGrid中显示结果

  public List<DispIRTSiteReports> DisplayIRTSiteReportsFilOn(List<IssueTypes> issueType, DateTime fDate, DateTime tDate)
  {

  try
        {

            var resultSet = from items in DataContext.IRT_Limited_View
                            select items;

            var iType = issueType.Select(i=>i.IssueName); //contains multiple selected issue type Names

            if (issueType.Count != 0)
            {
                foreach (var type in iType)
                {
                    var copy = type;
                    resultSet = resultSet.Where(items => items.Type_Text.Equals(copy));                       
                }                    
            }

            var newResultSet = (from q in resultSet
                                where q.Date_Time > fDate && q.Date_Time < tDate
                                select new DispIRTSiteReports
                                {                                        
                                    PhExt = q.Phone_Extension,
                                    IssueType = q.Type_Text,
                                    IssueSubType = q.Subtype_Text,
                                    IssueDes = q.Issue_Description
                                }).ToList();

            return newResultSet;

        }
        catch (Exception ex)
        {
            throw ex;
        }
public List displayirtsitereptsfilon(List issueType、DateTime fDate、DateTime tDate)
{
尝试
{
var resultSet=来自DataContext.IRT\u Limited\u视图中的项目
选择项目;
var iType=issueType.Select(i=>i.IssueName);//包含多个选定的问题类型名称
如果(issueType.Count!=0)
{
foreach(iType中的变量类型)
{
var copy=type;
resultSet=resultSet.Where(items=>items.Type_Text.Equals(copy));
}                    
}
var newResultSet=(来自resultSet中的q
其中q.Date\u Time>fDate和q.Date\u Time
}

我选择了多个IssueType名称,它们存储在var iType中,但是当我执行代码时,结果集包含null,因为第一次“foreach”迭代使用第一个IssueType名称更改了结果集,并且当第二次迭代完成时,结果集无法匹配第二个IssueType名称,因此结果集变为null


我想知道如何在不更改原始结果集的情况下查询结果集,以便结果集包含所选多个IssueType名称的相应数据。非常感谢您在这方面提供的帮助。

您应该将
DispIRTSiteReports
声明为
DataContract

[Serializable]
[DataContract]
public class DispIRTSiteReports
{                                             
   [Key]
   [DataMember]
   public long Id { get; set; }

   [DataMember]
   public string PhExt { get; set; }

   [DataMember]
   public string IssueType { get; set; }

   [DataMember]
   public string IssueSubType { get; set; }

   [DataMember]
   public string IssueDes { get; set; }
} 

希望这会有所帮助。

问题是您添加了谓词,这将转换为
。如果使用
Contains
,则得到与
相同的语义:

resultSet = resultSet.Where(items => iType.Contains(items.Type_Text));

(注意:无
foreach
loop)

是手动添加到元数据的
dispirtsiterepts
实体还是生成实体的一部分?dispirtsiterepts是一个包含getter、setter方法(用于IssueType ID和IssueType Name字段)的类Shi GertArnold,您的解决方案工作得很好。但是我无法理解这个解决方案,你能用外行术语解释一下为什么我的代码不起作用,而你的代码起作用(我不理解谓词的意思)。只是想知道我做错了什么。谓词是一个返回布尔值的函数(也称为条件)。所以Where语句中的lambda表达式是一个谓词。如果您制作了一个Where语句链(就像您在foreach中所做的那样),则条件通过
(连词)连接。Contains表示Type_文本在iType中可以有任何值,这与
相同。您好,GertArnold,感谢您的解释。祝你有美好的一天。