我有一个字符串数组说:
String[] Fields=new String[]{RowField,RowField1}
我可以使用下面的查询通过指定值获取值是查询,即RowField和RowField1:
var Result = (
from x in _dataTable.AsEnumerable()
select new
{
Name = x.Field<object>(RowField),
Name1 = x.Field<object>(RowField1)
})
.Distinct();
但是假设我在数组中有很多值,如:
String[] Fields= new String[]
{
RowField,
RowField1,
RowField2,
.......
RowField1000
};
如何在不指定查询中的每个字段的情况下使用此处的查询? 我如何遍历LINQ中的数组项?
根据LINQ query and Array of string中的一些建议,我试图使用下面的代码获得结果。
var result = (from row in _dataTable.AsEnumerable()
let projection = from fieldName in fields
select new {Name = fieldName, Value = row[fieldName]}
select projection.ToDictionary(p=>p.Name,p=>p.Value))
.Distinct();
但问题是它没有返回明确的值。任何想法?
答案 0 :(得分:0)
使用this overload of Distinct()
开始使用不同的DataRows
:
_dataTable.AsEnumerable().Distinct(new DataRowEqualityComparer())
DataRowEqualityComparer
的位置:
public class DataRowEqualityComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
return x.ItemArray.SequenceEqual(y.ItemArray);
}
public int GetHashCode(DataRow obj)
{
return string.Join("", obj.ItemArray).GetHashCode();
}
}