public List <(string filePath, VrcMetaData vrcMetaData)> GetVrcMetaDataIfExists(IEnumerable <string> filePaths) { using (asyncLock.Lock()) { var photos = Photos .Select(p => new { p.FilePath, p.World, p.Date, p.Photographer, p.PhotoUsers, }) .Where(p => filePaths.Contains(p.FilePath)) .ToList(); var results = new List <(string filePath, VrcMetaData vrcMetaData)>(); foreach (var photo in photos) { var filePath = photo.FilePath; var vrcMetaData = new VrcMetaData { World = photo.World?.WorldName, Date = photo.Date, Photographer = photo.Photographer?.UserName }; foreach (var(userName, twitterScreenName) in photo.PhotoUsers.Select(pu => (pu.User.UserName, pu.User.TwitterScreenName))) { var user = new KoyashiroKohaku.VrcMetaTool.User(userName) { TwitterScreenName = twitterScreenName }; vrcMetaData.Users.Add(user); } results.Add((filePath, vrcMetaData)); } return(results); } }
public async Task <List <(string filePath, VrcMetaData vrcMetaData)> > GetVrcMetaDataIfExistsAsync(IEnumerable <string> filePaths) { var photos = await Photos .Select(p => new { p.FilePath, p.World, p.Date, p.Photographer, p.PhotoUsers }) .ToListAsync() .ConfigureAwait(true); var results = new List <(string filePath, VrcMetaData vrcMetaData)>(); foreach (var photo in photos) { var filePath = photo.FilePath; var vrcMetaData = new VrcMetaData { World = photo.World?.WorldName, Date = photo.Date, Photographer = photo.Photographer?.UserName }; foreach (var(userName, twitterScreenName) in photo.PhotoUsers.Select(pu => (pu.User.UserName, pu.User.TwitterScreenName))) { var user = new KoyashiroKohaku.VrcMetaTool.User(userName) { TwitterScreenName = twitterScreenName }; vrcMetaData.Users.Add(user); } results.Add((filePath, vrcMetaData)); } return(results); }