[英]C# accessing IEnumerable collections
I am fairly new to working with collections so please bear with me my jargon might not even be accurate. 我很擅长使用收藏品,所以请耐心等待我,我的行话甚至可能都不准确。
I have PetaPoco returning query results as an IEnumerable, one collection for each result. 我让PetaPoco将查询结果作为IEnumerable返回,每个结果都有一个集合。 I want to evaluate the collections to get a specific string from a specific field in each collection.
我想评估集合以从每个集合中的特定字段获取特定字符串。 So far I am able to iterate the Enumerable and seeming able to get access an object as per my snippet below but when i view c.Language in debug, it is only the first character of the string (eg where c.Language should equal "JPY" it equals only "J")
到目前为止,我能够迭代Enumerable,并且看起来能够根据我的代码片段访问一个对象,但是当我在调试中查看c.Language时,它只是字符串的第一个字符(例如,c.Language应该等于“ JPY“它仅等于”J“)
am I doing this completely wrong? 我这样做完全错了吗? Thanks for the advice
谢谢你的建议
public void AddContactOrder(object sender, EventArgs e)
{
IEnumerable OrderFact = new OrdersFactsController().getOrderFacts(base.ModuleId);
IEnumerator enumerator = OrderFact.GetEnumerator();
var test = "";
List<string> lang = new List<string>();
while (enumerator.MoveNext())
{
OrderFact c = (OrderFact)enumerator.Current;
if (c.Language == "JPY")
{
test = "okay";
}
}
} }
getorderFacts() returns an IEnumerable where T is OrderFact getorderFacts()返回一个IEnumerable,其中T是OrderFact
public class OrderFact
{
public int ID { get; set; }
public int ModuleId { get; set; }
public string ProdCode { get; set; }
public string Language { get; set; }
public string Currency { get; set; }
public string KeyCodes { get; set; }
public string OrderSourceCode { get; set; }
public string OfferingCode { get; set; }
public string JobNumber { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
You're better off just using a foreach loop: 你最好只使用foreach循环:
foreach (var c in new OrdersFactsController().getOrderFacts(base.ModuleID))
{
if (c.Language == "JPY")
test = "okay";
}
You could use System.Linq
's Any
extension method : 您可以使用
System.Linq
的Any
扩展方法 :
public void AddContactOrder(object sender, EventArgs e)
{
var orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
var test = orderFacts.Any(x => x.Language == "JPY") ? "okay" : "";
}
public void AddContactOrder(object sender, EventArgs e)
{
IEnumerable<OrderFact> orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
var test = "";
if(orderFacts.Any(x => x.Language == "JPY")) test="okay";
}
LINQ! LINQ!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.