1

SharePoint でタイマーを実行して、さまざまなリストとワークフロー インスタンスを調べなければなりません。コードを改善する必要がありますか?

if、foreach がたくさんあり、変更する必要があるかどうかわかりません。

これはコードです:

                if (DateTime.Now.DayOfWeek == DayOfWeek.Friday || DateTime.Now.DayOfWeek == DayOfWeek.Tuesday)
                {               

                    using (SPSite site = new SPSite(ConfigManagerHelper.GetSetting("siteUrl")))
                    {
                        using (SPWeb web = site.OpenWeb())
                        {
                            SPList list = web.Lists[ConfigManagerHelper.GetSetting("listName")];
                            SPListItemCollection items = list.Items;

                            foreach (SPListItem item in items)
                            {
                                string tipo = item.ContentType.Name;

                                if (tipo != CMIHelper.IndicadorEstrategico && tipo != CMIHelper.ObjetivoEstrategico && tipo != CMIHelper.ObjetivoOperativo)
                                {
                                    continue;
                                }

                                if (tipo.Equals(CMIHelper.ObjetivoEstrategico))
                                {
                                    foreach (SPWorkflow wf in item.Workflows)
                                    {
                                        if (wf.InternalState == SPWorkflowState.Running)
                                        {
                                            //Indicadores
                                            if (wf.ParentAssociation.BaseTemplate.Name == "WFCuadroMandos")
                                            {
                                                foreach (SPListItem indAux in web.Lists["IndicadoresAux"].Items)
                                                {
                                                    if (wf.InstanceId.ToString().Equals(indAux["APV_PE_WorkflowIdAux"].ToString()))
                                                    { 

                                                    }
                                                }
                                            }
                                            //Objetivos Estratégicos
                                            if (wf.ParentAssociation.BaseTemplate.Name == "WFCuadroMandosObjEstr")
                                            {

                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

ありがとう、

4

1 に答える 1

0

まず第一に、「ifs」よりも優れているのはswich caseです。次に、コードの一部は存在しないものを操作できます。

キャッチしてみてください

SPListItemCollection items = list.Items;
foreach (SPListItem item in items)

あなたはこれを一度よく使っています

foreach (SPListItem item in list.Items)

そしていくつかの「null」をチェックしてください:)

そしてそれを変更します:

ヒント != CMIHelper.IndicadorEstrategico && ヒント != CMIHelper.ObjetivoEstrategico && ヒント != CMIHelper.ObjetivoOperativo

LINQに

于 2013-03-29T12:22:55.557 に答える