在LINQ中使用命名元组数组

时间:2018-11-15 18:34:26

标签: c# linq tuples

我正在尝试在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是否不能组合?

1 个答案:

答案 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,但是我确实认为这通常是一个不好的做法。