/// <summary> /// データベースカラムに対する関連トラックのリストを作る /// </summary> /// <param name="col"></param> /// <returns></returns> private TreeNode CreateTagBasedTree(Library.Column col) { // 再生中のトラックのタグの値をMultipleValuesで取得する var tagValues = Controller.FetchColumnValueMultipleValue(col.Name, "file_name='" + Controller.Current.Filename.EscapeSingleQuotSQL() + "'").Where(_ => !string.IsNullOrEmpty(_.Key)); if (tagValues.Count() == 0) { return(null); } var level1Node = CreateTreeNode( text: col.LocalText, imageIndex: ImageIndexes.FOLDER, expand: true, children: tagValues.Select(tagValue => { var tracks = FetchFromDBAsTuple4("SELECT file_name, tagTitle, tagArtist, tagAlbum FROM list WHERE any(" + col.Name + ", '" + tagValue.Key.EscapeSingleQuotSQL() + "');"); return(CreateTreeNode( text: tagValue.Key + " (" + tracks.Count() + ")", imageIndex: ImageIndexes.MULTIPLE_FILE, tag: new VirtualPlaylistEntry("SELECT * FROM list WHERE any(" + col.Name + ", '" + tagValue.Key.EscapeSingleQuotSQL() + "');", -1, -0), children: tracks.GroupBy(_ => _.Item4).Select(group => CreateTreeNode( text: group.Key + " (" + group.Count() + ")", imageIndex: ImageIndexes.ALBUM_DISC, children: group.Select(leafItem => CreateTreeNode( text: leafItem.Item2 + " - " + leafItem.Item3, imageIndex: ImageIndexes.SINGLE_FILE, tag: "SELECT * FROM list WHERE file_name = '" + leafItem.Item1.EscapeSingleQuotSQL() + "');" )) )) )); }) ); ConnectionPool.Release(); return(level1Node); }
public static String MetaData(Library.Column col) { return(MetaData(GetColumnIndexByName(col.Name))); }