private async Task MatchLinkerTags(SharelinkTagService tagService, ShareThing newShare, List<ShareThingMail> mails, IEnumerable<SharelinkTag> newShareTags)
 {
     var userService = this.UseSharelinkerService().GetSharelinkerService();
     var linkers = await userService.GetUserlinksOfUserId(UserSessionData.UserId);
     var linkerIds = from l in linkers select l.SlaveUserObjectId;
     var linkersTags = await tagService.GetLinkersTags(linkerIds);
     foreach (var linkerTags in linkersTags)
     {
         var sendMailFlag = false;
         var mail = new ShareThingMail()
         {
             ShareId = newShare.Id,
             Time = DateTime.UtcNow
         };
         if (linkerTags.Key != newShare.UserId)
         {
             var linkTagDatas = from lt in linkerTags.Value select lt;
             var matchTags = tagService.MatchTags(newShareTags, linkTagDatas);
             if (matchTags.Count() > 0)
             {
                 mail.Tags = matchTags;
                 sendMailFlag = true;
                 mail.ToSharelinker = linkerTags.Key;
             }
         }
         if (sendMailFlag)
         {
             mails.Add(mail);
         }
     }
 }