加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#linq查询聚合可以为空的布尔值

发布时间:2020-12-16 09:23:04 所属栏目:百科 来源:网络整理
导读:我想使用 linq按照逻辑聚合可空的bool: 如果一切都是真的那么真实; 如果一切都是假的那么假; 否则为null 这是我的代码,我无法得到bool聚合. class T1{ public string property1{get;set;} public string property2{get;set;} public bool? BoolProperty{get
我想使用 linq按照逻辑聚合可空的bool:

>如果一切都是真的那么真实;
>如果一切都是假的那么假;
>否则为null

这是我的代码,我无法得到bool聚合.

class T1
{
  public string property1{get;set;}
  public string property2{get;set;}
  public bool? BoolProperty{get;set;}
}

///initialize a list<T1> t2 with values......
List<T1> t2 = new List<T1>();
t2.Add(new T1() 
        {
            property1="hello",property2="world",BoolProperty=true
        });
t2.Add(new T1() 
        {
            property1="hello",BoolProperty=false
        });

List<T1> t1 = t2.GroupBy(g => new
        {
            g.property1,g.property2               
        })
        .Select(g => new T1
        {
            property1 = g.Key.property1,property2 = g.Key.property2,BoolProperty = ////can someone help? if all object in t2 are true,true; if all object in t2 are false,false; else null
 ///in this case i am expecting a null
        }).ToList();

所以t1将是“hello”,“world”,null;
谢谢

解决方法

把它放在你的代码中,

List<T1> t1 = t2.GroupBy(g => new
        {
            g.property1,BoolProperty =  g.GroupBy(grp => grp.BoolProperty).Count() > 1 ? null : g.Select(g_val=>g_val.BoolProperty).First()
        }).ToList();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读