我已经实现了一个自定义链表,我在实现IEnumerator <>时遇到了问题.具体来说,编译器告诉我The name "GetEnumerator" does not exist in the current context.我觉得我正在实现它,正如我在众多stackoverflow帖子和教程中看到的那样,我错过了什么?
这是我的数据结构:
namespace TestReportCreator_v3
{
public class FindingsTable : IEnumerable<string>
{
private Node head, mark;
public class Node
{
public string description; //covers weakness, retinaDesc, nessusDesc
public string riskLevel; //covers impactLevel, retinaRisk, nessusRisk
public string boxName; //box name results apply to
public string scanner; //wassp, secscn, retina, nessus
public string controlNumber; //ia control number impacted, wassp and secscn only
public string fixAction; //comments, retinaFix, nessusSolu
public string auditID; …Run Code Online (Sandbox Code Playgroud) 我有一个名为Sheet的类,其中包含一个包含Row对象的List .每个Row对象都有一个包含Cell对象的List .现在我想实现一个Sheet.Cells属性,该属性返回所有行上的所有单元格.我确信必须有一个优雅的LINQ解决方案,但一直无法弄清楚.假设我在this.rows中获得了所有行,如何使用LINQ获取包含所有行中所有单元格的IEnumerable?
IEnumerable<Cell> cells = this.rows ...?
Run Code Online (Sandbox Code Playgroud) 我知道有很多方法可以对这只猫进行修饰,但是我遇到了一些基本的while循环问题,它们正常退出,但是在从父函数返回IEnumerable.ToList()时会返回(并增加计数器).基本上我要做的是搜索单个关键字的列表并过滤掉结果集,直到我只获得包含所有关键字的项目.
它退出循环,然后一旦命中返回,它就会返回到循环中,i变量增加另一个位置(高于count变量),因此broken [i]抛出一个极限之外的错误.
虽然我知道有更好的方法来执行搜索,但我也非常感兴趣为什么代码会返回到退出的循环,再次递增,并导致错误 - 以及如何修复它.这很奇怪,我以前从未见过这个.是因为.ToList强制枚举备份链吗?
码:
public IEnumerable<Item> GetItemsForSearch(string search=null)
{
ParserDataContext data = new ParserDataContext();
if (search != null && search != "")
{
string[] broken = search.Split(' ');
IEnumerable<Item> watches = data.Items.Where(x => x.Title.ToLower().Contains(broken[0].ToLower())).OrderByDescending(x => x.DateListed).ThenByDescending(x => x.ID);
int i = 1;
int count = broken.Count();
while (i < count)
{
if (broken[i] != null)
item = items.Where(x => x.Title.ToLower().Contains(broken[i].ToLower()));
i++;
}
return items.Take(50).ToList();
}
Run Code Online (Sandbox Code Playgroud)
}
我是C#和IEnumerable的新手。我想替换IEnumerable中的特定项目。例如
IEnumerable<string> m_oEnum = new string[] {"abc","def","ghi", "abcdef"};
Run Code Online (Sandbox Code Playgroud)
我只想将字符串“ abc”替换为“ abc-test”,但不更改“ abcdef”。
我试图从中删除对象 IEnumerable<ImportDataMappingModel> GridList
我尝试了以下选项,但没有它们正在工作.
value 是一处房产 ImportDataMappingModel
GridList.ToList().RemoveAll(o => o.value==null);
GridList=GridList.TakeWhile(o => o.value!=null);
Run Code Online (Sandbox Code Playgroud) 我正在使用枚举和LINQ分组来分组来自具有5列的DataTable的数据.现在我需要访问结果中的每个列数据.
编辑:
private IEnumerable<object> getItemsForDisplay()
{
var result = toDisplay.AsEnumerable()
.GroupBy(x => new
{
Col1 = x.Field<string>("rItem"),
Col2 = x.Field<string>("rMaterial"),
Col3 = x.Field<string>("rSpecs")
})
.Select(g => new
{
Col1 = g.Key.Col1,
Col2 = g.Key.Col2,
Col3 = g.Key.Col3,
Col4 = String.Join(", ", g.Select(row => row.Field<string>("rQuantity"))),
Col5 = String.Join(", ", g.Select(row => row.Field<string>("rOptional"))),
}).ToList();
return result;
}
//In another function
foreach (var item in result)
{
//item.tostring shows this: {"aaa","bbb","ccc","ddd","eee")
//turn it to array string or list to access "aaa".. etc etc …Run Code Online (Sandbox Code Playgroud) 我有以下型号:
public class Word {
public string Original { get; set; }
public string Normalized { get; set; }
public string Root { get; set; }
public string Subroot { get; set; }
public Regex SubrootRegex { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我创建了以下三个IEqualityComparer<Word>:
public class NormalizedWordComparer : IEqualityComparer<Word> {
public bool Equals(Word x, Word y) {
return x.Normalized == y.Normalized;
}
public int GetHashCode(Word obj) {
return obj.GetHashCode();
}
}
public class RootWordComparer : IEqualityComparer<Word> {
public bool Equals(Word …Run Code Online (Sandbox Code Playgroud) 我想从我的枚举列表中获取最小值.我知道我可以:
return Enum.GetValues(typeof(VerloningsPeriodeType)).Cast<VerloningsPeriodeType>().Min();
Run Code Online (Sandbox Code Playgroud)
但是,这只是来自ENUM,我希望它来自我的var.
就像是:
public static ENUM_A BepaalMaxVerloningsPeriode(IEnumerable<ENUM_A> periods)
{
return Enum.GetValues(typeof(ENUM_A)).Cast<ENUM_A>().Min();
}
Run Code Online (Sandbox Code Playgroud)
我在哪里放置periodsvar?
我有一个包装对象列表的类.我希望这个类与foreach循环兼容.
我已经看到了几个关于如何在SO上做到这一点的问题,但大多数答案都没有为我编译.
class TrackList
{
private List<Track> tracks = new List<Track>();
}
Run Code Online (Sandbox Code Playgroud)
你会添加什么来使其适用于每个?
到目前为止,我有:
class TrackList : IEnumerable<Track>
{
// ...
public IEnumerator<Track> GetEnumerator()
{
return trackList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerator.GetEnumerator()
{
return this.GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
但它说(翻译错误):
错误1'HP.TrackList'未实现接口成员'System.Collections.IEnumerable.GetEnumerator()'.'HP.TrackList.GetEnumerator()'无法实现'System.Collections.IEnumerable.GetEnumerator()',因为它没有与'System.Collections.IEnumerator'对应的返回类型.XXX\TrackList.cs 11
如果相反我使用:
IEnumerator<Track> IEnumerator<Track>.GetEnumerator()
{
return this.GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
给我同样的错误.
我得到一个像这样的对象列表:
IEnumerable personeller = (IEnumerable)sicil_model.OlayForm_Personel();
Run Code Online (Sandbox Code Playgroud)
我像这样在里面循环
foreach (var personel in personeller)
{
//can't do anything...
}
Run Code Online (Sandbox Code Playgroud)
我在里面循环personeller,我可以看到这样的所有元素
personeller[0] | { Id = 5, Kimlik = "Koray Durudo?an", EMail = "koray@outlook.com", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geli?tirme" }
personeller[1] | { Id = 6, Kimlik = "Hasan P?nar", EMail = "hasan@dincerelektronik.com.tr", DepartmanAdi = "Yazilim", PozisyonAdi = "Yazilim Geli?tirme" }
.
.
.
Run Code Online (Sandbox Code Playgroud)
就像这样..问题是,我无法访问对象的元素.例如,我如何获得personeller [0]或者personeller [1]的人力资源?
我做了这样一堂课
public class Personel_Form
{
public int Id { get; set; }
public …Run Code Online (Sandbox Code Playgroud) c# ×10
ienumerable ×10
linq ×3
ienumerator ×2
list ×2
search ×2
.net ×1
asp.net-mvc ×1
enums ×1
excel ×1
foreach ×1
interface ×1
linked-list ×1
loops ×1
object ×1
replace ×1
vsto ×1