Linq查询组由多个列组成
我有一个字符串数组,比如:Linq查询组由多个列组成,linq,Linq,我有一个字符串数组,比如: String[] Fields=new String[]{RowField,RowField1} 其中,我可以使用以下查询通过指定值为query(即RowField和RowField1)来获取值: var Result = ( from x in _dataTable.AsEnumerable() select new { Name = x.Field<object>(RowField), Name1 = x.Field<obje
String[] Fields=new String[]{RowField,RowField1}
其中,我可以使用以下查询通过指定值为query(即RowField和RowField1)来获取值:
var Result = (
from x in _dataTable.AsEnumerable()
select new
{
Name = x.Field<object>(RowField),
Name1 = x.Field<object>(RowField1)
})
.Distinct();
在不指定查询中的每个行字段的情况下,如何使用此处的查询?
如何遍历LINQ中的数组项
根据中的一些建议,我尝试使用下面的代码获得结果
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();
但问题是它不会返回不同的值。有什么想法吗?从不同的
数据行开始,使用:
其中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();
}
}
公共类DataRowEqualityComparer:IEqualityComparer
{
公共布尔等于(数据行x、数据行y)
{
返回x.ItemArray.SequenceEqual(y.ItemArray);
}
public int GetHashCode(DataRow obj)
{
返回字符串.Join(“,obj.ItemArray).GetHashCode();
}
}
_dataTable.AsEnumerable().Distinct(new 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();
}
}