我正在尝试在LINQ(LINQ到对象)查询中使用命名元组数组:
range
但是,我收到一个编译器错误,告诉我from
没有成员,
,而是期望用逗号.from
而不是public class ParquetHelper{
static ParquetWriter<GenericData.Record> writer = null;
private static Schema schema;
public ParquetHelper(Schema schema, String pathName){
try {
Path path = new Path(pathName);
writer = AvroParquetWriter.
<GenericData.Record>builder(path)
.withRowGroupSize(ParquetWriter.DEFAULT_BLOCK_SIZE)
.withPageSize(ParquetWriter.DEFAULT_PAGE_SIZE)
.withSchema(schema)
.withConf(new Configuration())
.withCompressionCodec(CompressionCodecName.SNAPPY)
.withValidation(true)
.withDictionaryEncoding(false)
.build();
this.schema = schema;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
*
*/
public static void writeToParquet(JavaRDD<Record> empRDDRecords) throws IOException {
empRDDRecords.foreach(record -> {
if(null != record && new RecordValidator().validate(record, schema).isEmpty()){
writeToParquet(record);
}// TODO collect bad records here
});
writer.close();
}
}
。
我在做什么错?元组和LINQ-to-objects是否不能组合?
答案 0 :(得分:3)
问题是from
是linq用于迭代集合(from item in collection ...
)项的关键字。
要解决此问题,请在linq中使用@from
:
var result = from range in inputRanges
select Enumerable.Range(range.@from, range.to - range.@from + 1);
有关@
的更多信息,请参见:C# prefixing parameter names with @。 IMO在这种情况下可以使用属性名称from
,但是我确实认为这通常是一个不好的做法。