无法使用 SelectListitem 获取不同的值

2023-11-23

我试图获取下拉列表的不同值,但是当使用以下语法时,它会带回所有行。

有人可以告诉我如何使用正确的语法获取不同的值集吗?

IEnumerable<SelectListItem> ldidList = _db.TrafficHits.Select(c => new SelectListItem
            {
                Value = c.Id.ToString(),
                Text = c.ldid
            }).Distinct();

您当前代码的问题是Distinct将使用默认比较器SelectListItem。您将需要提供一个如下所示的自定义比较器:-

public class SelectListItemComparer : IEqualityComparer<SelectListItem>
    {
        public bool Equals(SelectListItem x, SelectListItem y)
        {
            return x.Text == y.Text && x.Value == y.Value;
        }

        public int GetHashCode(SelectListItem  item)
        {
            int hashText = item.Text == null ? 0 : item.Text.GetHashCode();
            int hashValue = item.Value == null ? 0 : item.Value.GetHashCode();
            return hashText ^ hashValue;
        }
    }

然后你可以像这样使用它:-

IEnumerable<SelectListItem> ldidList = _db.TrafficHits.Select(c => new SelectListItem
            {
                Value = c.Id.ToString(),
                Text = c.ldid
            }).Distinct(new SelectListItemComparer());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 SelectListitem 获取不同的值 的相关文章

随机推荐