怎样将DataTable中的表格筛选重复数据据筛选出来

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。15226人阅读
Asp.net & C#(202)
#region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
/// &summary&
/// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
/// eg:SortExprDataTable(dt,&Sex='男'&,&Time Desc&,1)
/// &/summary&
/// &param name=&dt&&传入的DataTable&/param&
/// &param name=&strExpr&&筛选条件&/param&
/// &param name=&strSort&&排序条件&/param&
/// &param name=&mode&&1,直接用DefaultView按条件返回,效率较高;2,DataTable筛选,排序返回符合条件行组成的新DataTable&/param&
public static DataTable SortDataTable(DataTable dt, string strExpr, string strSort, int mode)
switch (mode)
//方法一 直接用DefaultView按条件返回
dt.DefaultView.RowFilter = strE
dt.DefaultView.Sort = strS
//方法二 DataTable筛选,排序返回符合条件行组成的新DataTable
DataTable dt1 = new DataTable();
DataRow[] GetRows = dt.Select(strExpr, strSort);
//复制DataTable dt结构不包含数据
dt1 = dt.Clone();
foreach (DataRow row in GetRows)
dt1.Rows.Add(row.ItemArray);
return dt1;
#endregion
#region 获取DataTable前几条数据
/// &summary&
/// 获取DataTable前几条数据
/// &/summary&
/// &param name=&TopItem&&前N条数据&/param&
/// &param name=&oDT&&源DataTable&/param&
/// &returns&&/returns&
public static DataTable DtSelectTop(int TopItem, DataTable oDT)
if (oDT.Rows.Count & TopItem) return oDT;
DataTable NewTable = oDT.Clone();
DataRow[] rows = oDT.Select(&1=1&);
for (int i = 0; i & TopI i++)
NewTable.ImportRow((DataRow)rows[i]);
return NewT
#endregion
#region 获取DataTable中指定列的数据
/// &summary&
/// 获取DataTable中指定列的数据
/// &/summary&
/// &param name=&dt&&数据源&/param&
/// &param name=&tableName&&新的DataTable的名词&/param&
/// &param name=&strColumns&&指定的列名集合&/param&
/// &returns&返回新的DataTable&/returns&
public static DataTable GetTableColumn(DataTable dt, string tableName, params string[] strColumns)
DataTable dtn = new DataTable();
if (dt == null)
throw new ArgumentNullException(&参数dt不能为null&);
dtn = dt.DefaultView.ToTable(tableName, true, strColumns);
catch (Exception e)
throw new Exception(e.Message);
#endregionusing S
using System.Collections.G
using System.L
using System.D
using System.C
using System.T
namespace GuanEasy
/// &summary&
/// DataSet助手
/// &/summary&
public class DataSetHelper
private class FieldInfo
public string RelationN
public string FieldN
public string FieldA
public string A
private DataS
private ArrayList m_FieldI
private string m_FieldL
private ArrayList GroupByFieldI
private string GroupByFieldL
public DataSet DataSet
#region Construction
public DataSetHelper()
public DataSetHelper(ref DataSet dataSet)
ds = dataS
#endregion
#region Private Methods
private bool ColumnEqual(object objectA, object objectB)
if ( objectA == DBNull.Value && objectB == DBNull.Value )
if ( objectA == DBNull.Value || objectB == DBNull.Value )
return ( objectA.Equals( objectB ) );
private bool RowEqual(DataRow rowA, DataRow rowB, DataColumnCollection columns)
bool result =
for ( int i = 0; i & columns.C i++ )
result &= ColumnEqual( rowA[ columns[ i ].ColumnName ], rowB[ columns[ i ].ColumnName ] );
private void ParseFieldList(string fieldList, bool allowRelation)
if ( m_FieldList == fieldList )
m_FieldInfo = new ArrayList();
m_FieldList = fieldL
FieldInfo F
string[] FieldP
string[] Fields = fieldList.Split( ',' );
for ( int i = 0; i &= Fields.Length - 1; i++ )
Field = new FieldInfo();
FieldParts = Fields[ i ].Trim().Split( ' ' );
switch ( FieldParts.Length )
//to be set at the end of the loop
Field.FieldAlias = FieldParts[ 1 ];
FieldParts = FieldParts[ 0 ].Split( '.' );
switch ( FieldParts.Length )
Field.FieldName = FieldParts[ 0 ];
if ( allowRelation == false )
Field.RelationName = FieldParts[ 0 ].Trim();
Field.FieldName = FieldParts[ 1 ].Trim();
if ( Field.FieldAlias == null )
Field.FieldAlias = Field.FieldN
m_FieldInfo.Add( Field );
private DataTable CreateTable(string tableName, DataTable sourceTable, string fieldList)
if ( fieldList.Trim() == && )
dt = sourceTable.Clone();
dt.TableName = tableN
dt = new DataTable( tableName );
ParseFieldList( fieldList, false );
foreach ( FieldInfo Field in m_FieldInfo )
dc = sourceTable.Columns[ Field.FieldName ];
DataColumn column = new DataColumn();
column.ColumnName = Field.FieldA
column.DataType = dc.DataT
column.MaxLength = dc.MaxL
column.Expression = dc.E
dt.Columns.Add( column );
if ( ds != null )
ds.Tables.Add( dt );
private void InsertInto(DataTable destTable, DataTable sourceTable,
string fieldList, string rowFilter, string sort)
ParseFieldList( fieldList, false );
DataRow[] rows = sourceTable.Select( rowFilter, sort );
DataRow destR
foreach ( DataRow sourceRow in rows )
destRow = destTable.NewRow();
if ( fieldList == && )
foreach ( DataColumn dc in destRow.Table.Columns )
if ( dc.Expression == && )
destRow[ dc ] = sourceRow[ dc.ColumnName ];
foreach ( FieldInfo field in m_FieldInfo )
destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];
destTable.Rows.Add( destRow );
private void ParseGroupByFieldList(string FieldList)
if ( GroupByFieldList == FieldList )
GroupByFieldInfo = new ArrayList();
FieldInfo F
string[] FieldP
string[] Fields = FieldList.Split( ',' );
for ( int i = 0; i &= Fields.Length - 1; i++ )
Field = new FieldInfo();
FieldParts = Fields[ i ].Trim().Split( ' ' );
switch ( FieldParts.Length )
//to be set at the end of the loop
Field.FieldAlias = FieldParts[ 1 ];
FieldParts = FieldParts[ 0 ].Split( '(' );
switch ( FieldParts.Length )
Field.FieldName = FieldParts[ 0 ];
Field.Aggregate = FieldParts[ 0 ].Trim().ToLower();
Field.FieldName = FieldParts[ 1 ].Trim( ' ', ')' );
if ( Field.FieldAlias == null )
if ( Field.Aggregate == null )
Field.FieldAlias = Field.FieldN
Field.FieldAlias = Field.Aggregate + &of& + Field.FieldN
GroupByFieldInfo.Add( Field );
GroupByFieldList = FieldL
private DataTable CreateGroupByTable(string tableName, DataTable sourceTable, string fieldList)
if ( fieldList == null || fieldList.Length == 0 )
return sourceTable.Clone();
DataTable dt = new DataTable( tableName );
ParseGroupByFieldList( fieldList );
foreach ( FieldInfo Field in GroupByFieldInfo )
DataColumn dc = sourceTable.Columns[ Field.FieldName ];
if ( Field.Aggregate == null )
dt.Columns.Add( Field.FieldAlias, dc.DataType, dc.Expression );
dt.Columns.Add( Field.FieldAlias, dc.DataType );
if ( ds != null )
ds.Tables.Add( dt );
private void InsertGroupByInto(DataTable destTable, DataTable sourceTable, string fieldList,
string rowFilter, string groupBy)
if ( fieldList == null || fieldList.Length == 0 )
ParseGroupByFieldList( fieldList );
ParseFieldList( groupBy, false );
DataRow[] rows = sourceTable.Select( rowFilter, groupBy );
DataRow lastSourceRow = null, destRow =
bool sameR
int rowCount = 0;
foreach ( DataRow sourceRow in rows )
if ( lastSourceRow != null )
foreach ( FieldInfo Field in m_FieldInfo )
if ( !ColumnEqual( lastSourceRow[ Field.FieldName ], sourceRow[ Field.FieldName ] ) )
if ( !sameRow )
destTable.Rows.Add( destRow );
if ( !sameRow )
destRow = destTable.NewRow();
rowCount = 0;
rowCount += 1;
foreach ( FieldInfo field in GroupByFieldInfo )
switch ( field.Aggregate.ToLower() )
case null:
case &last&:
destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];
case &first&:
if ( rowCount == 1 )
destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];
case &count&:
destRow[ field.FieldAlias ] = rowC
case &sum&:
destRow[ field.FieldAlias ] = Add( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );
case &max&:
destRow[ field.FieldAlias ] = Max( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );
case &min&:
if ( rowCount == 1 )
destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];
destRow[ field.FieldAlias ] = Min( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );
lastSourceRow = sourceR
if ( destRow != null )
destTable.Rows.Add( destRow );
private object Min(object a, object b)
if ( ( a is DBNull ) || ( b is DBNull ) )
return DBNull.V
if ( ( (IComparable) a ).CompareTo( b ) == -1 )
private object Max(object a, object b)
if ( a is DBNull )
if ( b is DBNull )
if ( ( (IComparable) a ).CompareTo( b ) == 1 )
private object Add(object a, object b)
if ( a is DBNull )
if ( b is DBNull )
return ( (decimal) a + (decimal) b );
private DataTable CreateJoinTable(string tableName, DataTable sourceTable, string fieldList)
if ( fieldList == null )
return sourceTable.Clone();
DataTable dt = new DataTable( tableName );
ParseFieldList( fieldList, true );
foreach ( FieldInfo field in m_FieldInfo )
if ( field.RelationName == null )
DataColumn dc = sourceTable.Columns[ field.FieldName ];
dt.Columns.Add( dc.ColumnName, dc.DataType, dc.Expression );
DataColumn dc = sourceTable.ParentRelations[ field.RelationName ].ParentTable.Columns[ field.FieldName ];
dt.Columns.Add( dc.ColumnName, dc.DataType, dc.Expression );
if ( ds != null )
ds.Tables.Add( dt );
private void InsertJoinInto(DataTable destTable, DataTable sourceTable,
string fieldList, string rowFilter, string sort)
if ( fieldList == null )
ParseFieldList( fieldList, true );
DataRow[] Rows = sourceTable.Select( rowFilter, sort );
foreach ( DataRow SourceRow in Rows )
DataRow DestRow = destTable.NewRow();
foreach ( FieldInfo Field in m_FieldInfo )
if ( Field.RelationName == null )
DestRow[ Field.FieldName ] = SourceRow[ Field.FieldName ];
DataRow ParentRow = SourceRow.GetParentRow( Field.RelationName );
DestRow[ Field.FieldName ] = ParentRow[ Field.FieldName ];
destTable.Rows.Add( DestRow );
#endregion
#region SelectDistinct / Distinct
/// &summary&
/// 按照fieldName从sourceTable中选择出不重复的行,
/// 相当于select distinct fieldName from sourceTable
/// &/summary&
/// &param name=&tableName&&表名&/param&
/// &param name=&sourceTable&&源DataTable&/param&
/// &param name=&fieldName&&列名&/param&
/// &returns&一个新的不含重复行的DataTable,列只包括fieldName指明的列&/returns&
public DataTable SelectDistinct(string tableName, DataTable sourceTable, string fieldName)
DataTable dt = new DataTable( tableName );
dt.Columns.Add( fieldName, sourceTable.Columns[ fieldName ].DataType );
object lastValue =
foreach ( DataRow dr in sourceTable.Select( &&, fieldName ) )
if ( lastValue == null || !( ColumnEqual( lastValue, dr[ fieldName ] ) ) )
lastValue = dr[ fieldName ];
dt.Rows.Add( new object[]{lastValue} );
if ( ds != null && !ds.Tables.Contains( tableName ) )
ds.Tables.Add( dt );
/// &summary&
/// 按照fieldName从sourceTable中选择出不重复的行,
/// 相当于select distinct fieldName1,fieldName2,,fieldNamen from sourceTable
/// &/summary&
/// &param name=&tableName&&表名&/param&
/// &param name=&sourceTable&&源DataTable&/param&
/// &param name=&fieldNames&&列名数组&/param&
/// &returns&一个新的不含重复行的DataTable,列只包括fieldNames中指明的列&/returns&
public DataTable SelectDistinct(string tableName, DataTable sourceTable, string[] fieldNames)
DataTable dt = new DataTable( tableName );
object[] values = new object[fieldNames.Length];
string fields = &&;
for ( int i = 0; i & fieldNames.L i++ )
dt.Columns.Add( fieldNames[ i ], sourceTable.Columns[ fieldNames[ i ] ].DataType );
fields += fieldNames[ i ] + &,&;
fields = fields.Remove( fields.Length - 1, 1 );
DataRow lastRow =
foreach ( DataRow dr in sourceTable.Select( &&, fields ) )
if ( lastRow == null || !( RowEqual( lastRow, dr, dt.Columns ) ) )
for ( int i = 0; i & fieldNames.L i++ )
values[ i ] = dr[ fieldNames[ i ] ];
dt.Rows.Add( values );
if ( ds != null && !ds.Tables.Contains( tableName ) )
ds.Tables.Add( dt );
/// &summary&
/// 按照fieldName从sourceTable中选择出不重复的行,
/// 并且包含sourceTable中所有的列。
/// &/summary&
/// &param name=&tableName&&表名&/param&
/// &param name=&sourceTable&&源表&/param&
/// &param name=&fieldName&&字段&/param&
/// &returns&一个新的不含重复行的DataTable&/returns&
public DataTable Distinct(string tableName, DataTable sourceTable, string fieldName)
DataTable dt = sourceTable.Clone();
dt.TableName = tableN
object lastValue =
foreach ( DataRow dr in sourceTable.Select( &&, fieldName ) )
if ( lastValue == null || !( ColumnEqual( lastValue, dr[ fieldName ] ) ) )
lastValue = dr[ fieldName ];
dt.Rows.Add( dr.ItemArray );
if ( ds != null && !ds.Tables.Contains( tableName ) )
ds.Tables.Add( dt );
/// &summary&
/// 按照fieldNames从sourceTable中选择出不重复的行,
/// 并且包含sourceTable中所有的列。
/// &/summary&
/// &param name=&tableName&&表名&/param&
/// &param name=&sourceTable&&源表&/param&
/// &param name=&fieldNames&&字段&/param&
/// &returns&一个新的不含重复行的DataTable&/returns&
public DataTable Distinct(string tableName, DataTable sourceTable, string[] fieldNames)
DataTable dt = sourceTable.Clone();
dt.TableName = tableN
string fields = &&;
for ( int i = 0; i & fieldNames.L i++ )
fields += fieldNames[ i ] + &,&;
fields = fields.Remove( fields.Length - 1, 1 );
DataRow lastRow =
foreach ( DataRow dr in sourceTable.Select( &&, fields ) )
if ( lastRow == null || !( RowEqual( lastRow, dr, dt.Columns ) ) )
dt.Rows.Add( dr.ItemArray );
if ( ds != null && !ds.Tables.Contains( tableName ) )
ds.Tables.Add( dt );
#endregion
#region Select Table Into
/// &summary&
/// 按sort排序,按rowFilter过滤sourceTable,
/// 复制fieldList中指明的字段的数据到新DataTable,并返回之
/// &/summary&
/// &param name=&tableName&&表名&/param&
/// &param name=&sourceTable&&源表&/param&
/// &param name=&fieldList&&字段列表&/param&
/// &param name=&rowFilter&&过滤条件&/param&
/// &param name=&sort&&排序&/param&
/// &returns&新DataTable&/returns&
public DataTable SelectInto(string tableName, DataTable sourceTable,
string fieldList, string rowFilter, string sort)
DataTable dt = CreateTable( tableName, sourceTable, fieldList );
InsertInto( dt, sourceTable, fieldList, rowFilter, sort );
#endregion
#region Group By Table
public DataTable SelectGroupByInto(string tableName, DataTable sourceTable, string fieldList,
string rowFilter, string groupBy)
DataTable dt = CreateGroupByTable( tableName, sourceTable, fieldList );
InsertGroupByInto( dt, sourceTable, fieldList, rowFilter, groupBy );
#endregion
#region Join Tables
public DataTable SelectJoinInto(string tableName, DataTable sourceTable, string fieldList, string rowFilter, string sort)
DataTable dt = CreateJoinTable( tableName, sourceTable, fieldList );
InsertJoinInto( dt, sourceTable, fieldList, rowFilter, sort );
#endregion
#region Create Table
public DataTable CreateTable(string tableName, string fieldList)
DataTable dt = new DataTable( tableName );
string[] Fields = fieldList.Split( ',' );
string[] FieldsP
foreach ( string Field in Fields )
FieldsParts = Field.Trim().Split( & &.ToCharArray(), 3 ); // allow for spaces in the expression
// add fieldname and datatype
if ( FieldsParts.Length == 2 )
dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( &System.& + FieldsParts[ 1 ].Trim(), true, true ) );
dc.AllowDBNull =
else if ( FieldsParts.Length == 3 ) // add fieldname, datatype, and expression
Expression = FieldsParts[ 2 ].Trim();
if ( Expression.ToUpper() == &REQUIRED& )
dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( &System.& + FieldsParts[ 1 ].Trim(), true, true ) );
dc.AllowDBNull =
dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( &System.& + FieldsParts[ 1 ].Trim(), true, true ), Expression );
if ( ds != null )
ds.Tables.Add( dt );
public DataTable CreateTable(string tableName, string fieldList, string keyFieldList)
DataTable dt = CreateTable( tableName, fieldList );
string[] KeyFields = keyFieldList.Split( ',' );
if ( KeyFields.Length & 0 )
DataColumn[] KeyFieldColumns = new DataColumn[KeyFields.Length];
for ( i = 1; i == KeyFields.Length - 1; ++i )
KeyFieldColumns[ i ] = dt.Columns[ KeyFields[ i ].Trim() ];
dt.PrimaryKey = KeyFieldC
#endregion
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1925030次
积分:18578
积分:18578
排名:第511名
原创:251篇
转载:204篇
评论:171条
(4)(8)(6)(3)(8)(17)(5)(7)(1)(12)(31)(12)(10)(4)(2)(7)(38)(2)(1)(1)(1)(1)(7)(12)(7)(3)(4)(6)(6)(5)(13)(6)(4)(9)(6)(14)(6)(17)(6)(2)(12)(2)(10)(5)(11)(13)(37)(12)(17)(22)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'DataTable的筛选,过滤后绑定数据源的两种方法(DataTable的select和使用linq返回List集合) - green hand - 博客园
comments(0)
trackbacks(0)
一般数据处理使用DataTable的情况会很多,而我们很多时候会对得到的DataTable的数据进行筛选后绑定到Combobox、GridView、Repeat等控件中,现在分享一下两种DataTable在C#程序中的筛选处理方式。
我们先手动创建一个DataTable
    &DataTable dt=new DataTable();
     DataColumn dtc = new DataColumn("id",typeof(string));&&&&&&&&&&& dt.Columns.Add(dtc);
&&&&&&&&&&& dtc = new DataColumn("name",typeof(string));&&&&&&&&&&& dt.Columns.Add(dtc);
&&&&&&&&&&& dtc = new DataColumn("tel",typeof(Int32));&&&&&&&&&&& dt.Columns.Add(dtc);
&&&&&&&&&&& //添加数据到DataTable&&&&&&&&&&& DataRow dr = dt.NewRow();&&&&&&&&&&& dr["id"] = "1";&&&&&&&&&&& dr["name"] = "张三";&&&&&&&&&&& dr["tel"] = 54531;&&&&&&&&&&& dt.Rows.Add(dr);
第一种DataTable常规的Select。
& // 直接用DefaultView按条件返回
&&&&&&&&&&&&&&&&&&&& dt.DefaultView.RowFilter = strE&&&&&&&&&&&&&&&&&&&& dt.DefaultView.Sort = strS
//DataTable筛选,排序返回符合条件行组成的新DataTable
       & &DataTable dt1 = new DataTable();&&&&&&&&&&&&&&&&&&&& DataRow[] GetRows = dt.Select(strExpr, strSort);&&&&&&&&&&&&&&&&&&&& //复制DataTable dt结构不包含数据&&&&&&&&&&&&&&&&&&&& dt1 = dt.Clone();&&&&&&&&&&&&&&&&&&&& foreach (DataRow row in GetRows)&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&& dt1.Rows.Add(row.ItemArray);&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&& return dt1;
其中strExpr是如下
      "id&='3' and name='3--hello'"//支持and
      &"id&='3' or id='1'"//支持or
      "name like '%hello%'"//支持like&&&
strSort如下
      "id desc"
第二种则是利用linq返回List集合
&var&result = (&from&DataRow&order&in&dt.Rows
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&where&order["id"&].ToString() == "1"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&orderby&order["name"&]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&select&new&{ id= order["id"], name= order["name"&], tel= order["tel"&] }).ToList();
然后把结果返回绑定到空间中。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3926)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'DataView 过滤重复数据',
blogAbstract:'今天又学会一个好方法,很有用,分享一下。DataView 的ToTable()方法。假如我有一个DataTable表,里面有部分字段数据重复,而我又想只把这几个字段去除重复,怎么办呢?举个例子:&DataTable dt=new DatTable();&&&&&&&&&&&&&&&& //事先创建一个DataTable&string[] str = new string[] { \"sex\", \"age\" }; && //去除重复的字段&DataView dw = dt.DefaultV&&&&&&&&&&&&&&&&& //将DataTable转成DataView',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'。。。',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 怎么把重复项筛选出来 的文章

 

随机推荐