Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用在foreach中创建的变量_C# - Fatal编程技术网

C# 使用在foreach中创建的变量

C# 使用在foreach中创建的变量,c#,C#,我试图从XML文件和DB表列中提取重复项 这是我目前的代码 using (AH_ODS_DBEntities db = new AH_ODS_DBEntities()) { //XML CustomerRefNbr string[] allFiles = Directory.GetFiles(@"C:\xml\"); foreach (var @CRN in allFiles) { XElement xEle = XElem

我试图从XML文件和DB表列中提取重复项

这是我目前的代码

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
{
    //XML CustomerRefNbr            
    string[] allFiles = Directory.GetFiles(@"C:\xml\");
    foreach (var @CRN in allFiles)
    {
        XElement xEle = XElement.Load(@CRN);
        IEnumerable<XElement> invoices = xEle.Elements();
        foreach (XElement pEle in invoices)
        {
            string c = pEle.Element("CustomerRef").Value;
        }

        //DB CustomerRefNbr
        IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
        foreach (string invoice in rs)
        {
            string i = invoice;
        }
    }

}
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
字符串c=pEle.Element(“CustomerRef”).Value;
}
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
字符串i=发票;
}
}
}
我试图实现的是获取字符串c和I,比较它们是否匹配,并将它们放入列表中

var duplicateCRN= db.Sales.SqlQuery("SELECT  * FROM Sales WHERE " + i + "==" + c)
                            .ToList<Sale>();   
var duplicateCRN=db.Sales.SqlQuery(“从Sales中选择*,其中“+i+”==”+c)
.ToList();

但不确定我是否做对了。

您应该在foreach之前初始化字符串I和c。这样,您就可以在foreach中填充它,并在以后的代码中使用它。所以像这样:

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
        {
            //XML CustomerRefNbr            
            string[] allFiles = Directory.GetFiles(@"C:\xml\");
            string i = "";
            string c = "";
            foreach (var @CRN in allFiles)
            {
                XElement xEle = XElement.Load(@CRN);
                IEnumerable<XElement> invoices = xEle.Elements();
                foreach (XElement pEle in invoices)
                {
                    c = pEle.Element("CustomerRef").Value;
                }

                //DB CustomerRefNbr
                IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
                foreach (string invoice in rs)
                {
                    i = invoice;
                }
            }

        }
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
字符串i=“”;
字符串c=“”;
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
c=贝利元素(“CustomerRef”)值;
}
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
i=发票;
}
}
}

您应该在foreach之前初始化字符串i和c。这样,您就可以在foreach中填充它,并在以后的代码中使用它。所以像这样:

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
        {
            //XML CustomerRefNbr            
            string[] allFiles = Directory.GetFiles(@"C:\xml\");
            string i = "";
            string c = "";
            foreach (var @CRN in allFiles)
            {
                XElement xEle = XElement.Load(@CRN);
                IEnumerable<XElement> invoices = xEle.Elements();
                foreach (XElement pEle in invoices)
                {
                    c = pEle.Element("CustomerRef").Value;
                }

                //DB CustomerRefNbr
                IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
                foreach (string invoice in rs)
                {
                    i = invoice;
                }
            }

        }
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
字符串i=“”;
字符串c=“”;
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
c=贝利元素(“CustomerRef”)值;
}
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
i=发票;
}
}
}

您应该在foreach之前初始化字符串i和c。这样,您就可以在foreach中填充它,并在以后的代码中使用它。所以像这样:

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
        {
            //XML CustomerRefNbr            
            string[] allFiles = Directory.GetFiles(@"C:\xml\");
            string i = "";
            string c = "";
            foreach (var @CRN in allFiles)
            {
                XElement xEle = XElement.Load(@CRN);
                IEnumerable<XElement> invoices = xEle.Elements();
                foreach (XElement pEle in invoices)
                {
                    c = pEle.Element("CustomerRef").Value;
                }

                //DB CustomerRefNbr
                IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
                foreach (string invoice in rs)
                {
                    i = invoice;
                }
            }

        }
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
字符串i=“”;
字符串c=“”;
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
c=贝利元素(“CustomerRef”)值;
}
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
i=发票;
}
}
}

您应该在foreach之前初始化字符串i和c。这样,您就可以在foreach中填充它,并在以后的代码中使用它。所以像这样:

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
        {
            //XML CustomerRefNbr            
            string[] allFiles = Directory.GetFiles(@"C:\xml\");
            string i = "";
            string c = "";
            foreach (var @CRN in allFiles)
            {
                XElement xEle = XElement.Load(@CRN);
                IEnumerable<XElement> invoices = xEle.Elements();
                foreach (XElement pEle in invoices)
                {
                    c = pEle.Element("CustomerRef").Value;
                }

                //DB CustomerRefNbr
                IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
                foreach (string invoice in rs)
                {
                    i = invoice;
                }
            }

        }
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
字符串i=“”;
字符串c=“”;
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
c=贝利元素(“CustomerRef”)值;
}
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
i=发票;
}
}
}

如果我理解正确,您想检查xml中的任何元素是否包含与数据库中的任何条目相同的值,对吗

您现在在foreach中所做的并没有做任何事情,因为您只是覆盖了这些值,但没有对其执行任何操作

检查此代码:

using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
{
    //XML CustomerRefNbr            
    string[] allFiles = Directory.GetFiles(@"C:\xml\");
    foreach (var @CRN in allFiles)
    {
        XElement xEle = XElement.Load(@CRN);
        IEnumerable<XElement> invoices = xEle.Elements();
        foreach (XElement pEle in invoices)
        {
            string c = pEle.Element("CustomerRef").Value;
            //DB CustomerRefNbr
            IEnumerable<string> rs = db.Sales.AsQueryable().Select(crn => crn.CustomerRefNbr);
            foreach (string invoice in rs)
            {
                if (invoice == c);
                    //This is a match
            }
        }
    }
}
使用(AH_ODS_DBEntities db=new AH_ODS_DBEntities())
{
//XML CustomerRefNbr
字符串[]allFiles=Directory.GetFiles(@“C:\xml\”);
foreach(所有文件中的var@CRN)
{
XElement xEle=XElement.Load(@CRN);
IEnumerable发票=xEle.Elements();
foreach(发票中的XElement pEle)
{
字符串c=pEle.Element(“CustomerRef”).Value;
//DB CustomerRefNbr
IEnumerable rs=db.Sales.AsQueryable().Select(crn=>crn.CustomerRefNbr);
foreach(以卢比为单位的字符串发票)
{
如果(发票==c);
//这是一场比赛
}
}
}
}
你可以这样做