using System.Collections.Generic;
public static void Main()
var list = new List<TestObject>().AsQueryable();
var _record = new Record(5);
var _recordStruct = new RecordStruct(5);
var _recordWithoutOperator = new RecordWithoutOperator(5);
var _struct = new Struct(5);
var _class = new Class(5);
var r = list.Where(x => x.Id == _record).Expression.ToString();
var rs = list.Where(x => x.Id == _recordStruct).Expression.ToString();
var rwo = list.Where(x => x.Id == _recordWithoutOperator).Expression.ToString();
var s = list.Where(x => x.Id == _struct).Expression.ToString();
var c = list.Where(x => x.Id == _class).Expression.ToString();
public int Id { get; set; }
public string Name { get; set; }
public record Record(int Id)
public static implicit operator int(Record hashId) => hashId.Id;
public static implicit operator Record(int id) => new Record(id);
public record RecordWithoutOperator(int Id)
public static implicit operator int(RecordWithoutOperator hashId) => hashId.Id;
public record struct RecordStruct(int Id)
public static implicit operator int(RecordStruct hashId) => hashId.Id;
public static implicit operator RecordStruct(int id) => new RecordStruct(id);
public int Id { get; set; }
public static implicit operator int(Struct hashId) => hashId.Id;
public static implicit operator Struct(int id) => new Struct(id);
public int Id { get; set; }
public static implicit operator int(Class hashId) => hashId.Id;
public static implicit operator Class(int id) => new Class(id);