Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# ';数据表';不包含';的公共实例定义;GetEnumerator';_C#_.net_Datatable - Fatal编程技术网

C# ';数据表';不包含';的公共实例定义;GetEnumerator';

C# ';数据表';不包含';的公共实例定义;GetEnumerator';,c#,.net,datatable,C#,.net,Datatable,我正试图从DataTable中得到结果,但我被卡住了,不知道该怎么办。 我有公共静态数据表VratiKorisnike(),它需要返回数据表结果表,因为我的结果存储在结果表中。 到目前为止,我的职责就在这里 public static DataTable VratiKorisnike() { List<Korisnik> lstADUsers = new List<Korisnik>(); string sDomainName = "saos";

我正试图从
DataTable
中得到结果,但我被卡住了,不知道该怎么办。 我有
公共静态数据表VratiKorisnike()
,它需要返回
数据表
结果表
,因为我的结果存储在
结果表
中。 到目前为止,我的职责就在这里

public static DataTable VratiKorisnike()
{
    List<Korisnik> lstADUsers = new List<Korisnik>();
    string sDomainName = "saos";
    string DomainPath = "LDAP://" + sDomainName;

    string output = @"C:\output.txt";

    DirectoryEntry searchRoot = new DirectoryEntry(DomainPath);
    DirectorySearcher search = new DirectorySearcher(searchRoot);


    search.Filter = "(&(objectClass=user)(objectCategory=person))";
    search.PropertiesToLoad.Add("samaccountname");
    search.PropertiesToLoad.Add("usergroup");
    search.PropertiesToLoad.Add("displayname");
    search.PropertiesToLoad.Add("userAccountControl");
    search.PropertiesToLoad.Add("PasswordExpirationDate");
    //search.PropertiesToLoad.Add("DomainGroup");


    DataTable resultsTable = new DataTable();
    resultsTable.Columns.Add("samaccountname");
    resultsTable.Columns.Add("usergroup");
    resultsTable.Columns.Add("displayname");
    resultsTable.Columns.Add("userAccountControl");
    resultsTable.Columns.Add("PasswordExpirationDate");
    //resultsTable.Columns.Add("DomainGroup");


    SearchResult result;
    SearchResultCollection resultCol = search.FindAll();

    if (resultCol != null)
    {
        for (int counter = 0; counter <= (resultCol.Count - 1); counter++)
        {
            string UserNameEmailString = string.Empty;

            result = search.FindOne();

            if ((result.Properties.Contains("samaccountname") && result.Properties.Contains("usergroup")))
            {
                Korisnik korisnik = new Korisnik();
                korisnik.Ime = ((string)(result.Properties["samaccountname"][0]));
                korisnik.Prezime = ((string)(result.Properties["displayname"][0]));
                korisnik.AccountExpired = (DateTime)result.Properties["userAccountControl"][0];
                korisnik.PassNevExp = ((bool)result.Properties["PasswordExpirationDate"][0]);
                korisnik.DomenskaGrupa = ((string)(result.Properties["DomainGroup"][0]));

                DataRow dr = resultsTable.NewRow();

                dr["samaccountname"] = korisnik.Ime;
                dr["displayname"] = korisnik.Prezime;
                dr["userAccountControl"] = korisnik.AccountExpired;
                dr["PasswordExpirationDate"] = korisnik.PassNevExp;
                dr["DomainGroup"] = korisnik.DomenskaGrupa;
                resultsTable.Rows.Add(dr);
                lstADUsers.Add(korisnik);

            }

        }
        var json = JsonConvert.SerializeObject(resultCol, Formatting.Indented);
        var res = json;
        Console.WriteLine(resultCol);
        Console.ReadLine();
        File.WriteAllText(output, json);
    }
    return resultsTable;
}
我试着这样做:

foreach(DataTable dt in  VratiKorisnike())
{
    Console.WriteLine(dt);
}
错误为
VratiKorisnike()
您知道如何解决此问题吗?

您需要使用以下属性:

foreach (var korisnik in VratiKorisnike().Rows)
它表示数据表的行集合,以及。实际上,它将像这样编译,正如您所看到的,由于
GetEnumerator
的缘故,您可以使用您的循环:

IEnumerator enumerator = VratiKorisnike().Rows.GetEnumerator();
try
{
    while (enumerator.MoveNext())
    {
        DataRow value = (DataRow)enumerator.Current;
        Console.WriteLine(value);
    }
}
finally
{
    IDisposable disposable = enumerator as IDisposable;
    if (disposable != null)
    {
        disposable.Dispose();
    }
}

要将
数据表
用作
IEnumerable
,需要使用

foreach(VratiKorisnike()中的数据行。AsEnumerable())
{
字符串displayName=row.Field(“displayName”)
...
}

不起作用VratiKorisnike'在当前版本中不存在context@unknow_user您可能需要使用System.Linq声明的
。您需要将
System.Data
添加到您的命名空间中,并且它可能是
可计算的
,而不是
VratiKorisnike
(您可能还需要添加对
System.Data.DataSetExtensions
的引用)
IEnumerator enumerator = VratiKorisnike().Rows.GetEnumerator();
try
{
    while (enumerator.MoveNext())
    {
        DataRow value = (DataRow)enumerator.Current;
        Console.WriteLine(value);
    }
}
finally
{
    IDisposable disposable = enumerator as IDisposable;
    if (disposable != null)
    {
        disposable.Dispose();
    }
}
foreach (DataRow row in VratiKorisnike().AsEnumerable())
{
    string displayName = row.Field<string>("displayname")
    ...
}