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")
...
}