C# 检查具有DateTime键的两个词典是否共享相同的日期

C# 检查具有DateTime键的两个词典是否共享相同的日期,c#,C#,我有两本字典。我正在存储指定时间的值。现在,我想在处理它时变得更细粒度。我想比较一下这两本词典是否有相同的月份和年份,与日期无关。我怎么可能做到这一点。您可以尝试使用Linq查找关键点的交点: Boolean hasSameKeys = (dict1.Keys.Select(x => new DateTime(x.Year, x.Month, 1)).Intersect( dict2.Keys.Select(x => new DateTime(x.Year, x

我有两本字典。我正在存储指定时间的值。现在,我想在处理它时变得更细粒度。我想比较一下这两本词典是否有相同的月份和年份,与日期无关。我怎么可能做到这一点。

您可以尝试使用Linq查找关键点的交点:

  Boolean hasSameKeys =
    (dict1.Keys.Select(x => new DateTime(x.Year, x.Month, 1)).Intersect(
     dict2.Keys.Select(x => new DateTime(x.Year, x.Month, 1)))).Any();
如果要检查字典中是否有年份和月份,可以再次使用Linq:

  int month = 3;   // <- Month of interest
  int year = 2014; // <- Year of interest
  Boolean hasKeys = dict1.Keys.Where(x => (x.Year == year) && (x.Month == month)).Any();
int-month=3;//x、 钥匙,
x=>x.Aggregate(0,(总和,项目)=>sum+item);

日期时间
转换为
字符串
只保留其中的年份和月份:

String dateString = DateTime.Now.ToString("yyyyMM");

然后你只需要做一个简单的字符串比较。

我几乎更喜欢使用linq。在本例中,Linq的
任何
方法

        var month = 3;
        var year = 2014;

        var dic1 = new Dictionary<int, DateTime>();
        var dic2 = new Dictionary<int, DateTime>();

        // fill dictionaries

        if (dic1.Any(date => date.Value.Year == year && date.Value.Month == month) &&
            dic2.Any(date => date.Value.Year == year && date.Value.Month == month))
        {
            // do something
        }
var月=3;
风险值年份=2014年;
var dic1=新字典();
var dic2=新字典();
//填字典
如果(dic1.Any)(日期=>date.Value.Year==Year&&date.Value.Month==Month)&&
dic2.Any(日期=>date.Value.Year==Year&&date.Value.Month==Month))
{
//做点什么
}

到目前为止你试过什么了吗?如果我想检查字典中是否有某个月……不管是哪一天。如果是,更新数据。还可以在字典中添加日期吗?@user3305453:您可以在字典键上使用Linq,请参阅我的编辑。我确实需要一些更大的帮助。我有一些数据和一些日期时间。现在我必须按年、月、日等向用户表示数据。所以我必须预先计算所有的值。您能帮我解决这个问题吗。@user3305453:如果您想聚合数据,可以使用另一个Linq,请参阅我的编辑
        var month = 3;
        var year = 2014;

        var dic1 = new Dictionary<int, DateTime>();
        var dic2 = new Dictionary<int, DateTime>();

        // fill dictionaries

        if (dic1.Any(date => date.Value.Year == year && date.Value.Month == month) &&
            dic2.Any(date => date.Value.Year == year && date.Value.Month == month))
        {
            // do something
        }