LINQ在DataGrid中输出两次数值
var query = from r in data.AsEnumerable() select new Test
{
Name = r.Field<string>(0),
DateReported = r.Field<DateTime>(2)
};
var newQuery = from i in query
orderby i.Name, i.DateReported
select i;
myData.DataContext = newQuery;
所以问题是,我正在读取一个Excel工作表并对这些值进行迭代。如果我使用查询将DataContext绑定到DataGrid,那么一切正常。但是,当我将它绑定到newQuery每个项目被输出两次 LINQ在DataGrid中输出两次数值
回答:
AsEnumerable()看起来可疑;它可能有副作用,导致重复执行两次。
我承认我不会马上看到会发生什么;表面上你会认为select new Test{...}
会强制立即进行评估,随后的查询只能对结果进行处理。但是当有人试图用他们的类型变得聪明的时候,我看到了陌生的东西......
什么类型是data
?
回答:
尝试重写等于在你的测试类:
public class Test {
public string Name { get; set; }
public DateTime DateReported { get; set; }
public override bool Equals(object obj)
{
Test test = obj as Test;
if (test == null)
return false;
return string.Equals(this.Name, test.Name) && this.DateReported == test.DateReported;
}
public override int GetHashCode()
{
return Name.GetHashCode()^DateReported.GetHashCode();
}
}
回答:
你有直接尝试这样做?
var query = from r in data.AsEnumerable() orderby r.Field<string>(0), r.Field<DateTime>(2)
select new Test
{
Name = r.Field<string>(0),
DateReported = r.Field<DateTime>(2)
};
并检查结果? 另外它在我看来,你没有把实际的代码,你只是示范代码演示。它可能来自实际的代码。
等待您的答复。 此致敬礼。
以上是 LINQ在DataGrid中输出两次数值 的全部内容, 来源链接: utcz.com/qa/262666.html