linq DataSet group 多字段 出现:必须至少有一个对象实现 IComparable 的错误。请我应该怎样解决??
var zq =from p in sGERPDataSet.CWTMP
group p by new { p.Flag, p.YWB_HXT, p.YWB_YWID, p.YWB_DJID } into g
orderby g.Key
select
new
{
g.Key,
NumProducts = g.Count(),
g
};
foreach (var _v in zq) //执行到这里,出现:必须至少有一个对象实现 IComparable 的错误。请我应该怎样解决??
{
MessageBox.Show(_v.Key.ToString());
MessageBox.Show(_v.NumProducts.ToString());
foreach (var _vv in _v.g)
{
MessageBox.Show(_vv.Flag.ToString() + _vv.YWB_HXT.ToString());
}
}
--------------------编程问答-------------------- 你需要为 CWTMP 对应的类型实现 IComparable,才可以对它分组。
这很容易理解,要分组,就要知道哪些是相同的,哪些是不同的,相同的才能分组。
你也可以这样写:
...
group p.某个需要分组的属性 by new { p.Flag, p.YWB_HXT, p.YWB_YWID, p.YWB_DJID } into g
... --------------------编程问答-------------------- 但我这样实现IComparable 也分不出来啊??? :
class tmpKey : IComparable<tmpKey>
{
public int _Flag;
public string _YWB_HXT;
public string _YWB_YWID;
public string _YWB_DJID;
public int CompareTo(tmpKey _key)
{
if (_Flag.CompareTo(_key._Flag) != 0)
return _Flag.CompareTo(_key._Flag);
else if (_YWB_HXT.CompareTo(_key._YWB_HXT) != 0)
return _YWB_HXT.CompareTo(_key._YWB_HXT);
else if (_YWB_YWID.CompareTo(_key._YWB_YWID) != 0)
return _YWB_YWID.CompareTo(_key._YWB_YWID);
else
return _YWB_DJID.CompareTo(_key._YWB_DJID);
}
}
var zq =
from p in sGERPDataSet.CWTMP
group p by new tmpKey { _Flag = p.Flag, _YWB_HXT = p.YWB_HXT, _YWB_YWID = p.YWB_YWID, _YWB_DJID=p.YWB_DJID } into g
orderby g.Key
select
new
{
g.Key,
NumProducts = g.Count(),
g
};
foreach (var _v in zq)
{
MessageBox.Show(_v.Key._Flag + _v.Key._YWB_HXT + _v.Key._YWB_YWID + _v.Key._YWB_DJID);
MessageBox.Show(_v.NumProducts.ToString());
foreach (var _vv in _v.g)
{
MessageBox.Show(_vv.Flag.ToString() + _vv.YWB_HXT.ToString());
}
}
--------------------编程问答-------------------- orderby g.Key
Key是什么类型?这个类型必须实现IComparable。
我刚才帮别人就解决了这个错误
补充:.NET技术 , C#