我正在使用FileHandler实用程序将CSV文件转换为Objects(Lore)。获取数据后,目的是消除数据字段someTemp的重复项。我使用LINQ查询来计算不同的值,但它给出以下错误: '对象'不包含' someTemp'的定义没有扩展方法' someTemp'接受类型'对象'的第一个参数。可以找到(您是否缺少using指令或程序集引用?)
有人可以帮忙。
FileHelperAsyncEngine engine = new FileHelperAsyncEngine(typeof(Lore));
using (engine.BeginReadFile(filePath))
{
var distinct = engine.GroupBy(x => x.someTemp).Select(y => y.Last());enter code here
// The engine is IEnumerable
foreach (Lore lor in engine)
{
StringBuilder str = new StringBuilder();
str.Append(lor.RowNumber + " ");
str.Append(lor.LocalDate + " ");
str.Append(lor.LocalTime);
Console.WriteLine("{0} {1} {2}",lor.RowNumber,lor.LocalDate,lor.LocalTime);
listBox1.Items.Add(str);
}
}
[DelimitedRecord(",")]
[IgnoreFirst]
public class Lore
{
public int RowNumber;
[FieldConverter(ConverterKind.Date,@"MM/dd/yyyy")]
public DateTime LocalDate;
[FieldConverter(ConverterKind.Date,"HH:mm:ss")]
public DateTime LocalTime;
public int Batch_Size;
public int someTemp { get; set; }
}
答案 0 :(得分:1)
如果您在编译时知道您的类型,则应使用通用版本,否则您将必须转换结果。
var engine = new FileHelperAsyncEngine<Lore>();
答案 1 :(得分:0)
nVoigt的回答是正确的,通用版本是你需要的,我认为它会为你处理。如果没有,正确的行将是:
var distinct = engine.GroupBy(x => x.someTemp).Select(y => (y.Last()) as Lore)
或
var distinct = engine.GroupBy(x => x.someTemp).Select(y => y.Last()).Cast<Lore>()
如果您在编译时不知道类型,则应该只使用此结构,然后您将Lore
替换为类型参数T
。