C# SQL 的拼接Union和循环遍历子节点

SQL 的拼接Union和循环

随便写的拼接。
最后一次不用union。

SQL 的拼接Union

// An highlighted block
 List<string> item = db.Fetch<string>(@"select a.id from User_FunctionalModule a  where a.ParentId = @0", pa.Id);
 all.AddRange(item);
 for (int i = 0; i < all.Count; i++)
                        {
                            sql.Append(@"select a.*,c.id as [PowerId],0 as [Open], 0 as [IsParent] from 	User_FunctionalModule a left join  (select * from User_Relevance b where b.AcceptId = @0) c on a.Id = c.PassiveId  where a.id  = @1  ", pa.RoleId, all[i]");                          
                            if (i != all.Count - 1)
                                sql.Append(" union all ");
                        }
                        sql.Append(" order by [CreateTime]");;

循环遍历子节点Id

// An highlighted block
/// Bll层,对string[] Id进行转换,用list b进行保存,然后再把list转换成string[] Id;
 	List<string> b = Id.ToList();
            foreach (var it in Id)
            {             
                GetIds(it, b);
            }
            Id = b.ToArray();
//使用子节点方法
   private void GetIds(string id, List<string> list)
        {
            var result = DbInstance.CreateDataBase().Fetch<string>("select a.Id from User_FunctionalModule WHERE ParentId = @0", id);
            if (result.Count > 0)
            {
                foreach (var item in result)
                {
                    list.Add(item);
                    GetIds(item, list);
                }
            }
        }  
C#中,使用`YamlDotNet.Reading`库获取YAML文件中特定节点及其子节点通常涉及以下步骤: 首先,确保已如先前所述引入了必要的命名空间: ```csharp using YamlDotNet.Reading; using YamlDotNet.Reading.Model; ``` 假设你想从名为`buildRelease`的父节点开始,我们可以创建一个递归函数来遍历其所有子节点: ```csharp public class BuildReleaseNode { public string Name { get; set; } public List<SubNode> SubNodes { get; set; } // 假设有一个名为SubNode的模型类 } // 预先定义用于存储结果的列表 List<BuildReleaseNode> resultNodes = new List<BuildReleaseNode>(); private void TraverseYamlNode(YamlNode node, ref BuildReleaseNode parentNode) { if (node is MappingNode mappingNode) { foreach (KeyValuePair<string, YamlNode> pair in mappingNode.Children) { var childName = pair.Key; var childValue = pair.Value; // 检查是否是需要的buildRelease节点 if (childName == "buildRelease") { var buildReleaseNode = new BuildReleaseNode(); parentNode.SubNodes.Add(buildReleaseNode); // 递归处理buildRelease下的子节点 TraverseYamlNode(childValue, ref buildReleaseNode); } else { // 如果不是,直接添加到当前parentNode的SubNodes中,或者作为普通属性处理 parentNode.AddProperty(childName, childValue); // 添加属性 } } } else if (node is ScalarNode scalarNode) { // 对于简单值,可以直接设置为属性 parentNode.AddProperty(scalarNode.Tag, scalarNode.Value); } } // 获取yaml文件并开始遍历 void ProcessYamlFile(string filePath) { var stream = File.OpenText(filePath); var reader = new StreamReader(stream); var parser = new Parser(reader); var document = parser.Parse(); var root = document.Documents[0].RootNode; // 初始化parentNode,这里是整个文档的根 var rootNode = new BuildReleaseNode(); TraverseYamlNode(root, ref rootNode); // 结果现在存储在resultNodes列表中 // 对于每个BuildReleaseNode,你可以进一步操作或遍历其SubNodes } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值